Sobes.tech
Junior

Hogyan lehet meghatározni, hogy egy osztály származik-e egy másik osztályból?

sobes.tech MI

Válasz az MI-től

Az instanceof operátor vagy a Class interfész isInstance() metódusának használata.

// Példa az instanceof használatával
if (myObject instanceof MyParentClass) {
    // myObject példánya a MyParentClass-nek vagy annak leszármazottjának
}
// Példa a isInstance() használatával
if (MyParentClass.class.isInstance(myObject)) {
    // myObject példánya a MyParentClass-nek vagy annak leszármazottjának
}

Ezenkívül ellenőrizhető a isAssignableFrom() vagy a getSuperclass() metódusokkal is a Class osztályban.

// Példa a isAssignableFrom() használatával
if (MyParentClass.class.isAssignableFrom(myObject.getClass())) {
    // myObject osztálya a MyParentClass vagy annak leszármazottja
}
// Példa a getSuperclass() használatával (rekurzív ellenőrzést igényel)
Class<?> currentClass = myObject.getClass();
while (currentClass != null) {
    if (currentClass.equals(MyParentClass.class)) {
        // myObject példánya a MyParentClass-nek vagy annak leszármazottjának
        break;
    }
    currentClass = currentClass.getSuperclass();
}

Az instanceof operátor és a isInstance() metódus a legközvetlenebb és legajánlottabb módszerek erre a feladatra. A isAssignableFrom() akkor hasznos, ha típuskompatibilitást akarunk ellenőrizni hozzárendeléskor, míg a getSuperclass() további iterációkat igényel.