Antworten:
Wenn Sie wissen möchten, ob ein Class
anderer erweitert wird, verwenden Sie Class # isAssignableFrom (Class) . Für Ihr Beispiel wäre es:
if(B.class.isAssignableFrom(A.class)) { ... }
Wenn Sie daran interessiert sind, ob eine Instanz von einem bestimmten Typ ist oder nicht, verwenden Sie instanceof
:
A obj = new A();
if(obj instanceof B) { ... }
Beachten Sie, dass diese zurückgegeben werden, true
wenn die Klasse / Instanz Mitglied der Typhierarchie ist und nicht auf direkte Beziehungen zwischen Oberklassen und Unterklassen beschränkt ist. Beispielsweise:
// 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
Wenn Sie nach direkten Beziehungen zwischen Oberklassen und Unterklassen suchen möchten, hat Tim ebenfalls eine Antwort gegeben .
Sie möchten wissen, ob b
zuweisbar ist von a
:
b.isAssignableFrom(a);
Wenn Sie wissen möchten, dass dies a
eine direkte Unterklasse von b
:
a.getSuperclass().equals(b);
a
und b
von der Frage