¿Cómo probar si una clase Java amplía otra en tiempo de ejecución?

¿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 Clase # isAssignableFrom (Clase) . 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 .

    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);