public class test { public static void main(String args[]) { class Foo { public int i=3;} Object o=(Object) new Foo(); Foo foo=(Foo) o; System.out.println("i="+foo.i); }}以下两句话为什么不会造成CastExceptionObject o=(Object) new Foo();Foo foo=(Foo) o;

热心网友

自下而上的强制转换当然没有问题(泛化),而自上而下的转化是有条件的。你程序中的转化过程是合法,如果写成: Object o = (Object) new Foo(); BrotherClass class = (BrotherClass) o;就会出现转化错误,当然这里BrotherClass也不是 Foo的父类才行。

热心网友

CastException是什么哦?不过我理解既然有了隐式转换就应该不会报错吧