什么是深拷贝,什么是浅拷贝
浅拷贝
创建一个新对象,这个对象有着原始对象属性的一份精确拷贝。如果属性是基本属性,拷贝的就是基本类型的值没人管属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。
深拷贝
将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象
常用的几种拷贝方式
BeanUtil.copy
运行时通过反射拷贝,浅拷贝,很方便
JSON.toString再反转
比较low的办法
使用Mapstruct
推荐使用,编译时生成转换class,性能较好,深拷贝
还有一个很大的好处的,可以ctrl shift G 查看哪些调用了get set 方法,以上两种是无法统计的
与lombok一起使用允许问题
maven中指定编译顺序