Sobes.tech
Junior

Ako určiť, že trieda je odvodená od inej triedy?

sobes.tech AI

Odpoveď od AI

Použitím operátora instanceof alebo metódy isInstance() rozhrania Class.

// Príklad s instanceof
if (myObject instanceof MyParentClass) {
    // myObject je inštanciou MyParentClass alebo jej potomka
}
// Príklad s isInstance()
if (MyParentClass.class.isInstance(myObject)) {
    // myObject je inštanciou MyParentClass alebo jej potomka
}

Tiež je možné overiť pomocou metód isAssignableFrom() alebo getSuperclass() triedy Class.

// Príklad s isAssignableFrom()
if (MyParentClass.class.isAssignableFrom(myObject.getClass())) {
    // Trieda myObject je inštanciou MyParentClass alebo jej potomka
}
// Príklad s getSuperclass() (vyžaduje rekurzívnu kontrolu)
Class<?> currentClass = myObject.getClass();
while (currentClass != null) {
    if (currentClass.equals(MyParentClass.class)) {
        // myObject je inštanciou MyParentClass alebo jej potomka
        break;
    }
    currentClass = currentClass.getSuperclass();
}

Operator instanceof a metóda isInstance() sú najpriamejšie a odporúčané pre tento úkol. isAssignableFrom() je užitočné na kontrolu kompatibility typov pri priraďovaní, a getSuperclass() vyžaduje ďalšie iterácie.