【发布时间】:2012-10-15 10:19:01
【问题描述】:
这是因为我的项目面临技术困难而提出的。
问题: 我需要克隆一个类的对象,它从第三方库类(我们无权修改其内容)扩展属性(继承)
让我用下面的例子来解释:
父类:
public class UnChangeableBaseClass {
//fields and Methods
}
儿童班:
class DerivedLocalClass extends UnChangeableBaseClass implements Cloneable {
// local fields and methods
public Object clone(){
Object clonedObj= null;
try{
clonedObj = super.clone();
}
catch(CloneNotSupportedException e){
//log exceptions
}
}
}
当我尝试这样做时,super.clone() 方法指的是 Class - UnChangeableBaseClass 类型,它不会覆盖 Object clone() 方法。我相信所有的类都是用java.lang.Object class 扩展的,隐含的protected Object clone() 方法将被继承到这个父类。所以,我认为派生类中的这个方法会覆盖父/对象克隆方法。但是在运行时 JVM 搜索在UnChangeableBaseClass 中明确定义的克隆方法。希望我以正确的方式解释,不会让您感到困惑。
我的问题如下:
在这种无法添加任何方法的典型情况下,如何实现克隆方法
在父类中有super.clone()调用对象克隆方法。如果上述情况不可行,是否有任何其他方法可以克隆派生类
对象(通过考虑上述场景中的所有限制)最后,只是为了了解这种 JVM 行为的原因(如上所述)。
【问题讨论】:
标签: java inheritance clone cloneable