【发布时间】:2014-03-11 15:25:30
【问题描述】:
我有一个Person 类,它实现了Cloneable。然后我有对象p 和o 引用Person 对象。我正在尝试将一个克隆到另一个中,并发现以下工作:
Object p = new Person("Heather");
Object o = ((Person)p).clone();
(我必须使用该强制转换,因为 clone() 在 Object 中受到保护。我使用它在 Person 中调用 clone()。)
我需要知道的是如何使用Class.cast() 执行上述转换。我知道如何投射一次,它会是这样的:
Object o = p.getClass().cast(p);
但是我如何以这种方式进行嵌套转换示例。 (我需要知道,因为在这个项目中,我并不总是知道要转换到哪个类,但我会知道该类是 Cloneable。)
我试过了…… ((可克隆)p).clone() ...但这不起作用。 clone()方法是Object类中的受保护方法,而接口Cloneable没有clone()方法,所以编译器无法识别。
我已经到处寻找答案,但在任何地方都找不到。感谢您的帮助。
【问题讨论】:
-
如果你知道它们都是可克隆类型,而你只是想克隆它们,我不明白你为什么不能使用 Object o = ((Cloneable)p)。克隆();。多态性FTW!
-
Class.cast 所做的只是对对象执行强制转换检查操作,以确保它是该类的实例。然后它把它留给编译器(它可能会执行另一个演员检查)来做它的通用踢踏舞。
-
很遗憾地说 ((Cloneable)p).clone() 没有用。 clone() 是 Object 上的受保护方法,它不在接口 Cloneable 中,因此编译器无法识别它。还有其他想法吗?
-
也许用您自己的支持
clone()方法的接口包装Cloneable? -
“嵌套铸造”是什么意思???