Definición de tres clases, la siguiente relación
class A {}
class B extends A {}
class C extends B {}
Tres métodos de prueba instanceof, isInstance, isAssignableFrom
Código de ensayo de la siguiente manera
A a = new C();
B b = new C();
C c = new C();
System.out.println(a instanceof B); // true
System.out.println(b instanceof B); // true
System.out.println(c instanceof B); // true
System.out.println(A.class.isInstance(B.class)); // false
System.out.println(B.class.isInstance(B.class)); // false
System.out.println(C.class.isInstance(B.class)); // false
System.out.println(A.class.isAssignableFrom(B.class)); // true
System.out.println(B.class.isAssignableFrom(B.class)); // true
System.out.println(C.class.isAssignableFrom(B.class)); // false
conclusión:
1, se determina si un objeto es una clases de objeto descendiente de una clase, se puede utilizar directamente un instanceof B, o B.class.isAssignableFrom (a.getClass ());
2, cuando no hay clase de objeto se determina si un descendiente de otra clase, solamente B.class.isAssignableFrom (C.class);
pasar:
Sé el segundo con más. . .