Sobes.tech
Junior

Башка классынан мурас алган класс экенин кантип аныктоого болот?

sobes.tech AI

AIден жооп

instanceof оператору же Class интерфейсинин isInstance() ыкмасын колдонуу.

// `instanceof` менен мисал
if (myObject instanceof MyParentClass) {
    // myObject MyParentClass же анын мураскорунун үлгүсү
}
// `isInstance()` менен мисал
if (MyParentClass.class.isInstance(myObject)) {
    // myObject MyParentClass же анын мураскорунун үлгүсү
}

Мындан тышкары, Class классынын isAssignableFrom() же getSuperclass() ыкмалары аркылуу да текшерүүгө болот.

// `isAssignableFrom()` менен мисал
if (MyParentClass.class.isAssignableFrom(myObject.getClass())) {
    // myObjectтин классы MyParentClass же анын мураскорунун үлгүсү
}
// `getSuperclass()` менен мисал (рекурсивдүү текшерүүнү талап кылат)
Class<?> currentClass = myObject.getClass();
while (currentClass != null) {
    if (currentClass.equals(MyParentClass.class)) {
        // myObject MyParentClass же анын мураскорунун үлгүсү
        break;
    }
    currentClass = currentClass.getSuperclass();
}

instanceof оператору жана isInstance() ыкмасы бул тапшырма үчүн эң түз жана сунушталган. isAssignableFrom() типтердин шайкештигин текшерүүдө пайдалуу, ал эми getSuperclass() кошумча итерцияларды талап кылат.