2013-11-21 57 views
-2

在我的測試下面,爲什麼Aa.class.getClasses()返回[]不是[A.class]?畢竟,Apublic如何獲取類實現的所有接口?

import org.junit.Test; 
import static org.hamcrest.CoreMatchers.is; 
import static org.junit.Assert.assertThat; 

public class GetClassesTest{  

    public interface A {} 
    class Aa implements A {} 

    @Test 
    public void getClassesShouldWork(){ 
     assertThat("should fail, but passes", Aa.class.getClasses(), is(new Class[]{})); 
//  assertThat("should pass, but fails!", Aa.class.getClasses(), is(new Class[]{ A.class })); 
    } 
} 

回答

-1

這是因爲getClasses()返回的類和接口一個類定義實現。你想要的是Class.getInterfaces()

import org.junit.Test; 
import static org.hamcrest.CoreMatchers.is; 
import static org.junit.Assert.assertThat; 

public class GetInterfacesTest{  

    public interface A {} 
    class Aa implements A {} 

    @Test 
    public void getInterfacesDoesWork(){ 
     assertThat("should pass, and passes", Aa.class.getInterfaces(), is(new Class[]{A.class})); 
    } 
} 
+5

我沒有反對自己的答案,但這不是閱讀文檔的問題嗎? –

+0

大聲笑。你是怎麼做到的?你問了一個問題,並在同一秒內自己給出答案! – isnot2bad

+0

玻璃半滿:他有一個棘手的問題,他固定自己,並想與社區分享。半空半杯:他試圖提升自己的聲望點。 – admdrew

相關問題