Sobes.tech
Junior

Bir sinifin başqa bir sinifdən törədiyini necə müəyyən etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

instanceof operatoru və ya Class interfeysinin isInstance() metodundan istifadə.

// `instanceof` ilə nümunə
if (myObject instanceof MyParentClass) {
    // myObject, MyParentClass və ya onun törəməsi nümunəsidir
}
// `isInstance()` ilə nümunə
if (MyParentClass.class.isInstance(myObject)) {
    // myObject, MyParentClass və ya onun törəməsi nümunəsidir
}

Həmçinin, Class sinfinin isAssignableFrom() və ya getSuperclass() metodları ilə də yoxlamaq olar.

// `isAssignableFrom()` ilə nümunə
if (MyParentClass.class.isAssignableFrom(myObject.getClass())) {
    // myObject-in sinfi, MyParentClass və ya onun törəməsidir
}
// `getSuperclass()` ilə nümunə (rekursiv yoxlama tələb edir)
Class<?> currentClass = myObject.getClass();
while (currentClass != null) {
    if (currentClass.equals(MyParentClass.class)) {
        // myObject, MyParentClass və ya onun törəməsi nümunəsidir
        break;
    }
    currentClass = currentClass.getSuperclass();
}

instanceof operatoru və isInstance() metodu bu vəzifə üçün ən birbaşa və tövsiyə olunanlardır. isAssignableFrom() tiplərin uyğunluğunu yoxlamaqda faydalıdır və getSuperclass() əlavə iterasiyalar tələb edir.