Question

Comment je tester si a est une sous-classe de b?

Class<?> a = A.class;
Class<?> b = B.class;
Était-ce utile?

La solution

Vous recherchez:

Super.class.isAssignableFrom(Sub.class)

Autres conseils

Si vous voulez savoir si oui ou non un Class étend une autre, utilisez classe # IsAssignableFrom (classe) . Pour exemple, il serait:

if(B.class.isAssignableFrom(A.class)) { ... }

Si vous êtes intéressé à savoir si ou non une instance est d'un type particulier, l'utilisation instanceof:

A obj = new A();
if(obj instanceof B) { ... }

Notez que ceux-ci reviendront true si la classe / instance est membre de la hiérarchie de type et ne sont pas restrictives pour diriger superclasse / sous-classe relations. Par exemple:

// 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

Si vous voulez vérifier les relations superclasse directe / sous-classe, Tim a fourni une réponse ainsi.

Vous voulez savoir si b est cessible de a:

b.isAssignableFrom(a);

En outre, si vous voulez savoir que a est une sous-classe directe de b:

a.getSuperclass().equals(b);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top