可能的重复:
Java cast 运算符如何工作?
Java 强制转换实现
我一直想知道对象转换在 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;
我知道你不需要投射它,但如果你这样做呢?后端有什么重要的事情发生吗?