java 拷贝

1.定义

深拷贝:相当于创建了一个新对象,只是这个对象的所有内容和被拷贝对象一模一样,同时两者之间是完成隔离的,相互之间没有影响

浅拷贝:也是创建了一个对象,但是这个对象的某些内容依然是被拷贝对象的,即通过这两个对象中任意一次修改,两个对象都会受到影响

2.实现方法

浅拷贝:实现cloneable,重写clone()方法,同时需要super.clone()

注意:

拷贝后获得的是一个独立对象,和原始对象拥有不同的内存地址

对于基本数据类型和string,两者是隔离的

对于非基本类型数据,只是拷贝了一份引用,实际指向的是同一个对象。

浅拷贝是创建了一个新的对象,然后新对象的每个值是由原始对象的值通过=号赋值

基本数据类型是值赋值,引用类型是引用赋值

深拷贝:就是创建了一个全新对象,新的对象内部所有成员也都是全新的,只是初始化的值已经由被拷贝对象确定了

深拷贝独立的对象;拷贝后对象的内容,与原始对象的内容完成没关系,都是独立的

深拷贝一般需要自己来实现,拷贝实现方式:反射和动态代理

反射:先通过反射获取对象的所有属性,然后修改可访问级别,然后赋值;再获取继承的父类属性,同样利用反射进行赋值

代理:通过get\set方法,通过中间代理

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容