java的深拷贝与浅拷贝,java 对象深拷贝
1.要复制对象,必须实现一个可克隆的接口。如果未实现此接口,将会生成CloneNotSupportedException异常。实际上这个接口是没有方法的,所以这种接口通常被称为标签接口。
2.Object中有一个clone()方法实现浅层复制。对于基本数据类型的成员变量,浅拷贝会直接传递值,也就是将属性值拷贝到一个新的对象上,所以基本数据类型可以直接浅拷贝。
对于可变数据类型,如日期对象,需要深层复制。当然,Date类自己实现了clone()方法,而String类没有,因为String对象是一个不可变的字符序列,在其生命周期内没有办法修改其内存中的字符序列。不同对象中的相似属性引用同一个字符串没有问题。
java学习视频教程:Java学习视频
例子如下:
公共类Main{
公共静态void main(String[] args){
}
}
类Employee实现可克隆的{
private int id
私人约会日期;
公共雇员(){}
公共雇员(int id){
this.id=id
this . Date=new Date();
}
@覆盖
public Employee clone()抛出CloneNotSupportedException{
object t=super . clone();//此时object中的副本只是一个浅层副本
员工克隆=(员工)t;
clone . date=this . data . clone();//date类实现深度复制,可以直接调用。
返回克隆;
}
}
类别管理器扩展员工{
私有字符串名称;
公共管理者(){
super();
}
公共管理器(字符串名称,int id){
超级(id);
this.name=name
}
@覆盖
公共管理器克隆(){
员工t=super . clone();//首先复制id日期属性。
man nager clone=(man nager)t;
clone . name=t . name;//String对象直接分配引用
返回克隆;
}
}更多java相关文章推荐:java入门教程以上是java对象复制的深度复制和浅层复制的详细内容。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。