我搜索此内容时仍会感到困惑。
以下是铸造普通班的例子
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 =(Integer)b有效而我i =(I)new H()不可行?
因为new H()
创建该类的一个对象H
,它既不是I
也不I
的子类,因此它不能被转换为I
。
尽管Number
b
在第一个例子是一个Integer
-有隐式new Integer(10)
有(Number
是一个抽象类),因此它可明显可以转换为Integer
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句