Antworten:
Wenn Sie wissen möchten, ob ein Classanderer 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, truewenn 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 aeine direkte Unterklasse von b:
a.getSuperclass().equals(b);
aund bvon der Frage