【发布时间】:2012-11-15 20:11:28
【问题描述】:
可能重复:
How does the Java cast operator work?
Java casting implementation
我一直想知道对象转换在 Java 中是如何工作的。我知道对于原始类型,它更像是二进制表示级别,但是对象呢?是不是有点像Polymorphism 或dynamic binding,因为一切都将在运行时确定?例如:
class Parent{
void A(){}
}
class Child extends Parent{
@Override
void A(){}
}
Parent p = new Parent();
Child c = (Child) p;
这在幕后是如何运作的?它会创建Child 的新实例吗?此外,如果您尝试投射会发生什么:
Child b = (Child) new Object();
最后一个,将原语转换为包装类时:
Double d = (Double) 3.3;
我知道你不需要强制转换它,但如果你这样做了怎么办?后端发生了什么重要的事情吗?
【问题讨论】:
-
你的意思是
class Child extends Parent对吧? -
您不能在继承层次结构中将运行时类型的对象向下转换为高于您希望向下转换为的子类,这将引发 ClassCastException。我提出了修改建议,如果我错了,请纠正我。
标签: java casting polymorphism