简而言之,将一个类中的属性复制到另一类。对于beanutils.copyproperties,您必须确保属性名称相同,因为它是根据get和set方法分配的。
可以将浅副本理解为参考类型,然后目标对象副本仅是源对象的地址。无论目标对象还是源对象都会更改,它们都会一起改变。
深度复制是将目标对象的所有属性复制到源对象。复制后,它们分开而没有任何关系。无论源对象或目标对象是什么,它都不会影响另一个。
无论是浅副本还是深拷贝,都对基本类型和字符串没有影响。
个人理解,通过以下代码,您可能会开始认为Internet上深度副本的定义不是问题,但是对于许多方法,说出该方法是问题的方法是有问题的。代码!
输出结果如下:
因为该方法是通过反射对象重新构造一个对象,无论原始目标对象中已经存在哪个参数值,它将被要复制的新对象的参数覆盖。
我们还可以看到,在属性的副本中,没有特殊处理,并且引用了该类型的属性,因此本质也是浅副本。
原始:https://juejin.cn/post/70974284577522695