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 .