programing

실행 시 하나의 Java 클래스가 다른 클래스를 확장하는지 테스트하려면 어떻게 해야 합니까?

itsource 2022. 8. 14. 10:43
반응형

실행 시 하나의 Java 클래스가 다른 클래스를 확장하는지 테스트하려면 어떻게 해야 합니까?

테스트 방법a의 하위 클래스입니다.b?

Class<?> a = A.class;
Class<?> b = B.class;

다음을 원하십니까?

Super.class.isAssignableFrom(Sub.class)

당신이 알고 싶은 것은ClassClass#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);

언급URL : https://stackoverflow.com/questions/3504870/how-to-test-if-one-java-class-extends-another-at-runtime

반응형