java8 实现map以value值排序操作
程序员文章站
2024-01-23 11:46:58
我就废话不多说了,大家还是直接看代码吧~补充知识:对beancopier拷贝对象中list类型属性的思考背景最近开发接口过程中,使用beancopier拷贝对象,当对象中嵌套自定义对象类型属性的时候,...
我就废话不多说了,大家还是直接看代码吧~
补充知识:对beancopier拷贝对象中list类型属性的思考
背景
最近开发接口过程中,使用beancopier拷贝对象,当对象中嵌套自定义对象类型属性的时候,
如果对象名称一致,但是对象类型不一致,拷贝的时候,该属性是会被忽略的,但是当对象中嵌套list集合类型属性(集合中是不同的对象类型)时,使用beancopier拷贝之后,返回给前台的数据是正确的,感觉不太懂其中的原理,就测试了下。
测试过程
新建几个对象
拷贝beana1到beanb1
转换结果如下图所示:对象类型被忽略
cglib生成的代理类如下所示
从copy实现代码中可以看到,不同对象类型属性间的拷贝被忽略
拷贝beana到beanb
转换结果如下图所示,list对象类型属性被成功赋值
但是对象beana和benab中的list属性,指向相同的引用,当用classb接收beanb中的list属性中的对象时,
会报对象强转失败
cglib生成的代理类如下所示
从copy的实现代码中可以看到,两个对象中的list类型的对象集合属性被成功赋值,但是是引用赋值
结论
beancopier对不同对象中的list对象集合类型的属性的拷贝是弱拷贝,而不是深拷贝,如果只是做对象拷贝,然后直接抛出这个对象给前台使用是没有问题的,但是如果这个通过拷贝得到的对象要在代码中进行业务流转,则会报java.lang.classcastexception 类强转异常
以上这篇java8 实现map以value值排序操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: 第五人格公布全新前锋联动皮肤:网友热议