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 կամ նրա ժառանգորդի օրինակ
}

Կարող եք նաև ստուգել 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() պահանջում է լրացուցիչ կրկնություններ։