2013-11-21 4 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

관련 문제