Назад к вопросам
Junior
70
questionbank

Как можно определить, что класс является производным от другого класса?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech 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() требует дополнительных итераций.