Junior
Ako určiť, že trieda je odvodená od inej triedy?
sobes.tech AI
Odpoveď od AI
Použitím operátora instanceof alebo metódy isInstance() rozhrania Class.
// Príklad s instanceof
if (myObject instanceof MyParentClass) {
// myObject je inštanciou MyParentClass alebo jej potomka
}
// Príklad s isInstance()
if (MyParentClass.class.isInstance(myObject)) {
// myObject je inštanciou MyParentClass alebo jej potomka
}
Tiež je možné overiť pomocou metód isAssignableFrom() alebo getSuperclass() triedy Class.
// Príklad s isAssignableFrom()
if (MyParentClass.class.isAssignableFrom(myObject.getClass())) {
// Trieda myObject je inštanciou MyParentClass alebo jej potomka
}
// Príklad s getSuperclass() (vyžaduje rekurzívnu kontrolu)
Class<?> currentClass = myObject.getClass();
while (currentClass != null) {
if (currentClass.equals(MyParentClass.class)) {
// myObject je inštanciou MyParentClass alebo jej potomka
break;
}
currentClass = currentClass.getSuperclass();
}
Operator instanceof a metóda isInstance() sú najpriamejšie a odporúčané pre tento úkol. isAssignableFrom() je užitočné na kontrolu kompatibility typov pri priraďovaní, a getSuperclass() vyžaduje ďalšie iterácie.