繁体   English   中英

用Java转换对象时,是否保留了对原始对象的引用?

[英]When casting an object in Java, is the reference to the original preserved?

例如,如果我要上一个Utensil类,然后像这样实例化它:

Utensil utensil = new Utensil();

然后又有了一个新的类Fork ,并像这样铸造utensil

Fork fork = (Fork)utensil;

fork是否仍在引用原始utensil对象?

是的,假设ForkUtensil的子类。

一个更好的例子是ForkUtensil的子类:

Fork fork = new Fork();
Utensil utensil = fork;

此时,变量forkutensil都引用同一对象。

是。

强制转换对象为您提供了对同一对象的引用,但是将其视为您强制转换为对象的类型。
(拳击转换除外)

我认为这不是您真正的意思。 在您的示例中,如果Fork扩展了Utensil,则您的代码将引发错误,因为器皿不是Fork且无法分配给fork。

如果你这样

Fork fork = new Fork();
Utensil utensil = fork;

则器皿仍会引用原始的Fork对象。 因此,我想您的问题的答案将是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM