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