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() изисква допълнителни итерации.