Java 在继承结构上实现接口 Cloneable
Java implementing interface Cloneable on a inheritance structure
我的代码有以下问题:
public class Parent {
...
}
public class Child extends Parent implements Cloneable {
...
@Override
public Child clone() {
return new Child() //deep copy
}
}
这是我的问题:
- 遵循 java 约定;我是否也需要为父级实现 Cloneable?
- 我是否必须将
throws CloneNotSupportedException
添加到 clone() 方法中,或者我可以将其放在一边吗?因为我无法捕获调用 clone() 的异常。
感谢您的帮助。
编辑:我选择了复制构造函数,因为它们更容易实现并且更动态。
Cloneable 是遗留的(旧的和奇怪的,在未来的开发中应该避免这种情况)。它不能做深拷贝,它的努力不值得去实现。您需要使用像 Jackson 或 Apache 这样的第三方库来进行深度复制。或者您可以构建自己的深层复制方法。
如果你已经实现了深拷贝,最好在构造函数中使用它。
public class Child extends Parent {
public Child(Child child){
this.property = child.getProperty();
// any copies
}
}
我的代码有以下问题:
public class Parent {
...
}
public class Child extends Parent implements Cloneable {
...
@Override
public Child clone() {
return new Child() //deep copy
}
}
这是我的问题:
- 遵循 java 约定;我是否也需要为父级实现 Cloneable?
- 我是否必须将
throws CloneNotSupportedException
添加到 clone() 方法中,或者我可以将其放在一边吗?因为我无法捕获调用 clone() 的异常。
感谢您的帮助。
编辑:我选择了复制构造函数,因为它们更容易实现并且更动态。
Cloneable 是遗留的(旧的和奇怪的,在未来的开发中应该避免这种情况)。它不能做深拷贝,它的努力不值得去实现。您需要使用像 Jackson 或 Apache 这样的第三方库来进行深度复制。或者您可以构建自己的深层复制方法。
如果你已经实现了深拷贝,最好在构造函数中使用它。
public class Child extends Parent {
public Child(Child child){
this.property = child.getProperty();
// any copies
}
}