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