[讨论]令人不解的向下转型
估计是编译器不够聪明class A{
void a(){
System.out.println("a()");
}
}
class B extends A{
void b(){
System.out.println("b()");
}
}
public class C {
public static void main (String[] args) {
A[] test={
new A(),
new B()
};
//test[0].b();这个大家都能理解
//test[1].b();奇怪就奇怪在这,我觉得应该可以,可是编译器不让我这么做,我看它还不够聪明
try{
((B)test[0]).b();//类型不匹配不允许向下转型
}catch(java.lang.ClassCastException e){
System.out.println("can't cast");
}
((B)test[1]).b();//传说中的向下转型
}
}