我一直在寻找这个仍然有一个困惑。
以下是Standered Class的铸造示例
public class Q {
public static void main(String... str){
Number b = 10;
Integer i = (Integer)b; // Workes Fine
}
}
下面是用户定义类的转换示例
class H{}
class I extends H{}
public class Q extends I{
public static void main(String... str){
I i = (I)new H(); //Show runtime java.lang.ClassCastException
}
}
上面是继承的例子。这样:
- 整数扩展数
- I 扩展 H
为什么 Integer i = (Integer)b 有效而 I i = (I)new H() 无效?