Sobes.tech
Junior

Чӣ тавр муайян кардан мумкин аст, ки оё синф аз синфи дигар мерос гирифтааст?

sobes.tech AI

Ҷавоб аз AI

Истифодаи оператори instanceof ё усули isInstance()-и интерфейси Class.

// Масалан бо `instanceof`
if (myObject instanceof MyParentClass) {
    // myObject намунаи MyParentClass ё фарзанди он аст
}
// Масалан бо `isInstance()`
if (MyParentClass.class.isInstance(myObject)) {
    // myObject намунаи MyParentClass ё фарзанди он аст
}

Ҳамчунин, бо истифода аз усулҳои isAssignableFrom() ё getSuperclass()-и синфи Class низ метавон санҷиш кард.

// Масалан бо `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() талаб мекунад, ки иловагӣ итератсияҳо анҷом дода шаванд.