比如说一个类
public class Father {
}
public class Son extends Father {
}
Father son = new Son();
(Son)son;
最后的son需要做一次向下转型。
但是向下转型必须要指明对应的子类,有没有什么办法可以不需要显示的指明,直接将son转换成对应的Son类型呢?
这个强制转换
必须要显式指明。
假设有下面三个类:
public abstract class Animal {}
public class Dog extends Animal {
// 狗吃肉
public void eatMeat() {}
}
public class Cat extends Animal {
// 猫吃鱼
public void eatFish() {}
}
Animal
为 抽象类,看下面代码:
Animal animal = ...;
你不显式的话,根本不知道这个animal是个什么?要想转换成具体子类,并进行相应的操作:
if(animal instanceof Dog) {
((Dog)animal).eatMeat();
}else if(animal instanceof Cat){
((Cat)animal).eatFish();
}
###没有
最多手工 instantof 接强转
这个只能强转了,没有其它方法了。