这是因为我的项目面临的技术困难而提出的。
问题: 我需要克隆一个类的对象,它从第三方库类扩展属性(继承)(我们无权修改其内容)
让我用下面的例子来解释:
家长班:
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
Type 并且它不会覆盖Object clone()
方法。我相信所有的类都是用 扩展的java.lang.Object class
,隐式protected Object clone()
方法将被继承到这个父类。所以,我认为派生类中的这个方法会覆盖父/对象克隆方法。但是在运行时 JVM 搜索在UnChangeableBaseClass
. 希望我以正确的方式解释而不会使您感到困惑。
我的问题如下:
在这种典型情况下如何实现克隆方法,我们无法
在父类中添加任何方法以必须super.clone()
调用对象克隆方法。如果上述情况不可能,是否有任何其他方法可以克隆派生类
对象(通过考虑上述场景中的所有限制)最后,只是为了了解这种 JVM 行为的原因(如上所述)。