a
하위 클래스가 있는지 테스트하는 방법 은 b
무엇입니까?
Class<?> a = A.class;
Class<?> b = B.class;
답변
를 찾습니까:
Super.class.isAssignableFrom(Sub.class)
답변
Class
확장이 다른 확장 인지 여부를 알고 싶다면 Class # isAssignableFrom (Class)를 사용하십시오 . 예를 들면 다음과 같습니다.
if(B.class.isAssignableFrom(A.class)) { ... }
인스턴스가 특정 유형인지 여부에 관심이있는 경우 다음을 사용하십시오 instanceof
.
A obj = new A();
if(obj instanceof B) { ... }
true
클래스 / 인스턴스가 유형 계층의 멤버이고 직접적인 수퍼 클래스 / 서브 클래스 관계에 제한적이지 않은 경우 반환 됩니다. 예를 들면 다음과 같습니다.
// if A.class extends B.class, and B.class extends C.class
C.class.isAssignableFrom(A.class); // evaluates to true
// ...and...
new A() instanceof C; // evaluates to true
직접적인 수퍼 클래스 / 서브 클래스 관계를 확인하려면 Tim도 답변 을 제공했습니다 .
답변
다음 b
에서 할당 가능한지 알고 싶습니다 a
.
b.isAssignableFrom(a);
또한, 그것이 a
직접적인 하위 클래스 인지 알고 싶다면 b
:
a.getSuperclass().equals(b);