我需要在我的一个没有超类的对象中实现深度克隆.
处理CloneNotSupportedException超类抛出的检查的最佳方法是什么(是Object)?
一位同事建议我按以下方式处理:
@Override
public MyObject clone()
{
MyObject foo;
try
{
foo = (MyObject) super.clone();
}
catch (CloneNotSupportedException e)
{
throw new Error();
}
// Deep clone member fields here
return foo;
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎是一个很好的解决方案,但我想把它扔到StackOverflow社区,看看是否还有其他任何我可以包含的见解.谢谢!
java.util.Calendar.clone()返回"...具有相同属性的新日历"并返回"此日历的浅表副本".
为回答这并不似乎是一个浅拷贝这里的SO.这个问题被标记为与语言无关, Java似乎不遵循语言无关的定义.当我单步执行代码时,我注意到结构和元素被复制到这个新对象,而不仅仅是语言无关的结构.
在Java中,什么是浅拷贝?
它与Java深层副本(如果存在)有何不同?
我正在阅读有关Java中的克隆,如何制作浅层/深层对象等的内容.
我想知道为什么我需要在Java中创建对象克隆?任何实时示例都有助于理解.