深拷贝的几种方式

198 阅读1分钟

什么是深拷贝,什么是浅拷贝

浅拷贝

创建一个新对象,这个对象有着原始对象属性的一份精确拷贝。如果属性是基本属性,拷贝的就是基本类型的值没人管属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。

深拷贝

将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象

常用的几种拷贝方式

BeanUtil.copy 

运行时通过反射拷贝,浅拷贝,很方便

JSON.toString再反转

比较low的办法

使用Mapstruct

推荐使用,编译时生成转换class,性能较好,深拷贝

还有一个很大的好处的,可以ctrl shift G 查看哪些调用了get set 方法,以上两种是无法统计的

blog.csdn.net/qq\_2834404…

blog.csdn.net/qq\_4473214…

与lombok一起使用允许问题

maven中指定编译顺序

www.jianshu.com/p/54fc77122…