127 votes

Comment tester si une classe java s’étend une autre lors de l’exécution ?

Comment pour tester si est une sous-classe de ?

248voto

meriton Points 30447
Vous êtes à la recherche de:

81voto

Rob Hruska Points 39151

Si vous voulez savoir si oui ou non un Class s'étend de l'autre, l'utilisation de la Classe#isAssignableFrom(Classe). Pour votre exemple, il serait:

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

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

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

Notez que ces reviendra true si la classe/instance est un membre de la hiérarchie des types et ne sont pas limitatifs de la super-classe directe/sous-classe de 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 souhaitez vérifier directement super-classe/sous-classe de relations, Tim a fourni une réponse .

38voto

Tim Stone Points 13966

Vous voulez savoir si [est assignable à partir de](http://download-llnw.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#isAssignableFrom%28java.lang.Class%29) :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X