unitarias - llamar variable de otra clase java
¿Cómo probar si una clase Java amplía otra en tiempo de ejecución? (3)
Desea saber si b se puede asignar desde a :
b.isAssignableFrom(a);
Además, si desea saber que a es una subclase directa de b :
a.getSuperclass().equals(b);
¿Cómo puedo probar si a es una subclase de b ?
Class<?> a = A.class;
Class<?> b = B.class;
Estás buscando:
Super.class.isAssignableFrom(Sub.class)
Si desea saber si una Class extiende o no a otra, utilice la Class#isAssignableFrom(Class) . Para su ejemplo, sería:
if(B.class.isAssignableFrom(A.class)) { ... }
Si le interesa saber si una instancia es de un tipo particular, use instanceof :
A obj = new A();
if(obj instanceof B) { ... }
Tenga en cuenta que estos devolverán true si la clase / instancia es miembro de la jerarquía de tipos y no son restrictivas para las relaciones directas de superclase / subclase. Por ejemplo:
// 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
Si desea verificar relaciones directas de superclase / subclase, Tim también ha proporcionado una respuesta .