如何支持clone方法
转载
1)实现Cloneable接口,因为Object的clone方法将检查类是否实现了Cloneable接口,如果没有将抛出异常CloneNotSupportedException对象。Cloneable接口没有任何方法,只是个标志,所以只需要简单得写上implements Cloneable即可。
2)改写从Object继承而来的clone方法,使它的访问权限为public,因为为了防止意外的支持clone操作,Object的clone方法是protected权限。
3)在clone方法中,调用super.clone()方法。Object的clone方法能够按照旧对象的大小创建足够的内存空间,并按位拷贝到新的对象空间。因此注意如果只调用super.clone方法,只能达到浅拷贝的效果。
如果想要达到深拷贝的效果,就需要自己编写代码拷贝每一个成员变量。
举例如下:
publicclass MyInteger implements Cloneable
{
privateintvalue;
public MyInteger(int value)
{
this.value=value;
}
publicvoid setValue(int value)
{
this.value=value;
}
publicint getValue()
{
returnvalue;
}
public Object clone()
{
try
{
returnsuper.clone();
}
catch(CloneNotSupportedException e)
{
System.err.println(e);
}
returnnull;
}
}

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
clone() 方法
克隆并追加一个 p 元素: 定义和用法 clone() 方法生成被选元素的副本,包含子节点、文本和属性。 语法 可选。布尔值。规定是否复制元素的所有事件处理。 默认地,副本中不包含事件处理器。
jquery html 事件处理 javascript 子节点 -
c# Clone方法
clone是深拷贝,copy是浅拷贝,如果是值类型的话是没什么区别的,如果是引用类型的话深拷贝拷贝的事整个对
序列化 浅拷贝 引用类型 深拷贝 数据