前言结论如下:BeanUtils.copyProperties 是浅拷贝 。
你为什么今天也想把这个BeanUtils.copyProperties的使用用于军事训练?
因为我发现大家(部分)对深拷贝浅拷贝不清楚,或者不知道具体的影响。
正文
演示示例:
第一类:
第二班:
小心! 第二个班使用了第一个班。
开始示例:
publicstaticvoidmain (string [ ] args ) { /** *模拟数据acomplexobject */complexobjectcomplexobjecta=newcomplexobjecta complexobjecta.set nickname (CQ dhj ); simpleobjectsimpleobject=newsimpleobject (; 简单对象. set name (jj dxz ); 简单对象. setage (12; complexobjecta.setsimpleobject (简单对象;/* *使用beanutils.copy properties复制模拟数据a,模拟数据b */complexobjectcomplexobjectb=newcomplexobject (); beanutils.copy properties (complexobjecta,complexObjectB ); System.out.println ('复制后,模拟数据a和模拟数据b:' ); system.out.println (complexobjecta.getsimpleobject ().toString ); system.out.println (complexobjectb.getsimpleobject ().toString ); System.out.println ('比较模拟数据a和模拟数据b中的引用simple是否引用同一地址: ') system.out.println (complexobjjjn System.out.println (复制的模拟数据b中引用的simple的属性age为888888 ); complexObjectB.getSimpleObject ().setage ) 88888; System.out.println ('修改后,原始数据a和复制的数据b中引用的对象simple的属性age: ); system.out.println (complexobjecta.getsimpleobject ().toString ); system.out.println (complexobjectb.getsimpleobject ().toString ); }
最后强调:
3http://www.Sina.com/http://www.Sina.com /
BeanUtils.copyProperties
http://www.Sina.com/http://www.Sina.com /
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /
如文中例子所示,在输入的复杂对象数据a中参照了用户对象年龄age为10的情况下;
复制数据b后,操作数据b的方法将年龄age改为88888;
那么,用后续的其他方法使用数据a。 想用的是第一个age是10,那样不能用。 受浅拷贝的影响,age变成了88888。
ok,提到这个。