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.