您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

java对象拷贝之深拷贝与浅拷贝

2024/3/29 2:13:12发布6次查看
1、要实现对象拷贝必须实现一个cloneable接口,如果不实现这个接口就会产生一个clonenotsupportedexception异常。其实这个接口一个方法都没有,因此这类接口常被称作标记接口。
2、object 中有一个clone() 方法实现了浅拷贝。对于基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象,所以基本的数据类型直接进行浅拷贝即可。
对于可变的数据类型,比如date对象就要实现深拷贝,当然date类自己实现了clone()方法,而比如string类就没有实现clone()方法,因为string对象是不可变字符序列,在它的生命周期中没有任何方法能修改他所在内存中的字符序列,不同对象中的同类属性引用同一个string是没有问题的。
java学习视频教程:java学习视频
示例如下:
public class main{ public static void main(string[] args){ }}class employee implements cloneable{ private int id; private date date; public employee(){} public employee(int id){ this.id=id; this.date=new date(); } @override public employee clone() throws clonenotsupportedexception{ object t=super.clone();//此时的object中的拷贝只是浅拷贝 employee clone=(employee)t; clone.date=this.data.clone();//date类实现了深拷贝,直接调用即可 return clone; }}class mannager extends employee{ private string name; public mannager(){ super(); } public mannager(string name,int id){ super(id); this.name=name; } @override public mannager clone(){ employee t=super.clone();//先把id date属性复制 mannager clone=(mannager)t; clone.name=t.name;//string 对象直接赋值引用 return clone; }}
更多java相关文章推荐:java入门教程
以上就是java对象拷贝之深拷贝与浅拷贝的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录