Sobes.tech
Junior

Kaip galima nustatyti, ar klasė yra išvestinė iš kitos klasės?

sobes.tech AI

Atsakymas iš AI

Naudojant operatorių instanceof arba isInstance() metodo sąsajoje Class.

// Pavyzdys su `instanceof`
if (myObject instanceof MyParentClass) {
    // myObject yra MyParentClass arba jos vaikų pavyzdys
}
// Pavyzdys su `isInstance()`
if (MyParentClass.class.isInstance(myObject)) {
    // myObject yra MyParentClass arba jos vaikų pavyzdys
}

Taip pat galima patikrinti naudojant isAssignableFrom() arba getSuperclass() metodus iš Class klasės.

// Pavyzdys su `isAssignableFrom()`
if (MyParentClass.class.isAssignableFrom(myObject.getClass())) {
    // myObject klasė yra MyParentClass arba jos vaikų pavyzdys
}
// Pavyzdys su `getSuperclass()` (reikalauja rekursinio patikrinimo)
Class<?> currentClass = myObject.getClass();
while (currentClass != null) {
    if (currentClass.equals(MyParentClass.class)) {
        // myObject yra MyParentClass arba jos vaikų pavyzdys
        break;
    }
    currentClass = currentClass.getSuperclass();
}

Operatorius instanceof ir metodas isInstance() yra tiesiausi ir rekomenduojami šiai užduočiai. isAssignableFrom() naudinga patikrinti tipų suderinamumą priskyrimo metu, o getSuperclass() reikalauja papildomų iteracijų.