Jak sprawdzić, czy ajest to podklasa b?
Class<?> a = A.class;
Class<?> b = B.class;
Odpowiedzi:
Jeśli chcesz wiedzieć, czy a Classrozszerza inny, użyj Class # isAssignableFrom (Class) . Na przykład byłoby to:
if(B.class.isAssignableFrom(A.class)) { ... }
Jeśli interesuje Cię, czy instancja jest określonego typu, użyj instanceof:
A obj = new A();
if(obj instanceof B) { ... }
Zwróć uwagę, że zwrócą one wartość, truejeśli klasa / instancja jest członkiem hierarchii typów i nie ograniczają bezpośrednich relacji nadklasy / podklasy. Na przykład:
// 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
Jeśli chcesz sprawdzić bezpośrednie relacje nadklasy / podklasy, Tim również udzielił odpowiedzi .
Chcesz wiedzieć, czy b można go przypisać z a :
b.isAssignableFrom(a);
Dodatkowo, jeśli chcesz wiedzieć, że ajest to bezpośrednia podklasa b:
a.getSuperclass().equals(b);
ai bz pytania