Yanıtlar:
BirininClass
diğerini genişletip genişletmediğini bilmek istiyorsanız , Class # isAssignableFrom (Class) kullanın . Örneğiniz için şöyle olacaktır:
if(B.class.isAssignableFrom(A.class)) { ... }
Bir örneğin belirli bir türde olup olmadığı ile ilgileniyorsanız, şunu kullanın instanceof
:
A obj = new A();
if(obj instanceof B) { ... }
true
Sınıf / örnek, tür hiyerarşisinin bir üyesiyse ve üst sınıf / alt sınıf ilişkilerini yönlendirmekle kısıtlayıcı değilse bunların döneceğini unutmayın . Örneğin:
// 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
Doğrudan üst sınıf / alt sınıf ilişkilerini kontrol etmek istiyorsanız, Tim de bir cevap verdi.
b
Şunlardan atanabilir olup olmadığını bilmek istiyorsunuz a
:
b.isAssignableFrom(a);
Ek olarak, a
bunun doğrudan bir alt sınıf olduğunu bilmek istiyorsanız b
:
a.getSuperclass().equals(b);
a
ve b
sorudan