• 主页
  • Java SE
  • J2ME
  • Web开发
  • Java EE
  • Eclipse

急!急!高效从复杂对象(嵌套多层)中获取目标属性值并替换该值的解决办法

一路奔跑1314 JAVA开发  2019-01-08 09:49:13
问题描述:
比如有一个复杂对象BigBO,里面的属性也是各种类型的BO或者List<BO>,而且BO属性中还可能嵌套小bo,存在多层嵌套情况。

需求是:
从这个BigBO中找到某个特定属性(也就是知道属性名,且在bigBO中没有同名属性,且寻找的属性类型为String。可能存在多个,存在对个情况是针对list<BO>)的值,并替换成其他值。

其他说明:复杂对象不固定

业务场景:我要把一些方法的入参(入参就是BigBO)中找到特定属性,并把该属性值替换成其他值。

我的解决方法:
是利用递归遍历复杂对象BigBO,找到目标属性并替换其值,但是效率比较慢。
我在递归遍历时对于不包含目标属性的bo不会遍历,且不遍历系统类,来减少无效的遍历。


请问各位大神,还有没有其他解决思路。这种递归遍历效率还是有点慢。

...全文
97 点赞 收藏 4
写回复
4 条回复
maradona1984 2020年01月03日
引用 3 楼 @时间旅行者@ 的回复:
顶楼上,说的有点道理蛤
人家都说遍历慢了,难道序列化反序列化没遍历?道理是这样子的么,当然个人觉得遍历并不会慢,你对象难道还有几千几万的小对象? 只是我觉得需求并不太明确或者不够清晰,有的地方描述画蛇添足.

从这个BigBO中找到某个特定属性(也就是知道属性名,且在bigBO中没有同名属性,且寻找的属性类型为String。可能存在多个,存在对个情况是针对list<BO>)的值,并替换成其他值。
从这个描述,非常简单啊,直接反射就搞定了,有你说的那么玄乎吗?还是我没get到你的点?
回复 点赞
@时间旅行者@ 2020年01月02日
顶楼上,说的有点道理蛤
回复 点赞
十八道胡同 2019年01月08日
脑洞大点

可否把 这个对象先序列化成json,然后在json里面修改你的值,然后在序列化成对象?
回复 点赞
一路奔跑1314 2019年01月08日
自己顶下! 自己顶下! 自己顶下! 自己顶下! 自己顶下! 自己顶下!
回复 点赞
发动态
发帖子
Java
创建于2007-09-28

1.8w+

社区成员

8.1w+

社区内容

Java相关技术讨论
社区公告
暂无公告