面试题答案
一键面试Vehicle vehicle = new SportsCar();
if (vehicle instanceof SportsCar) {
SportsCar sportsCar = (SportsCar) vehicle;
sportsCar.showPerformance();
}
在多层继承结构下,instanceof
通过在运行时检查对象的实际类型来保证向下转型的安全性和准确性。它会判断对象是否是特定类型或其子类型的实例,如果是,则表明可以安全地进行向下转型,避免了ClassCastException
异常。例如上述代码中,instanceof
先判断vehicle
实际指向的对象是否为SportsCar
类型,如果是,就可以安全地将vehicle
向下转型为SportsCar
类型并调用showPerformance()
方法。如果没有instanceof
检查直接转型,若vehicle
实际指向的不是SportsCar
类型的对象,就会抛出ClassCastException
异常。