Sobes.tech
Junior

Como se pode determinar se uma classe é derivada de outra classe?

sobes.tech IA

Resposta da IA

Usando o operador instanceof ou o método isInstance() da interface Class.

// Exemplo com instanceof
if (myObject instanceof MyParentClass) {
    // myObject é uma instância de MyParentClass ou de seu descendente
}
// Exemplo com isInstance()
if (MyParentClass.class.isInstance(myObject)) {
    // myObject é uma instância de MyParentClass ou de seu descendente
}

Também é possível verificar usando os métodos isAssignableFrom() ou getSuperclass() da classe Class.

// Exemplo com isAssignableFrom()
if (MyParentClass.class.isAssignableFrom(myObject.getClass())) {
    // A classe de myObject é uma instância de MyParentClass ou de seu descendente
}
// Exemplo com getSuperclass() (requer verificação recursiva)
Class<?> currentClass = myObject.getClass();
while (currentClass != null) {
    if (currentClass.equals(MyParentClass.class)) {
        // myObject é uma instância de MyParentClass ou de seu descendente
        break;
    }
    currentClass = currentClass.getSuperclass();
}

O operador instanceof e o método isInstance() são os mais diretos e recomendados para essa tarefa. isAssignableFrom() é útil para verificar compatibilidade de tipos ao atribuir, e getSuperclass() requer verificações adicionais.