关于Apache的BeanUtils.copyProperties方法调用后无法完成复制的原因分析

前言

调用一个第三方SDK的时候使用该SDK提供的Bean类封装数据调用,在使用BeanUtils.copyProperties的时候发现有些数据没成功的copy过去,使用DeBug进行源码分析,发现有的属性可以顺利获取到write方法.
然后发现所有属性的read方法都是顺利获取到的

分析

思考了一下觉得可能跟write方法有关系,就点开Bean查看了一下,发现无法获取到write方法,结果发现方法在set值的同时也返回实例本身用做链式调用.方法如下:在这里插入图片描述,看到这个方法的时候我当场就是:
在这里插入图片描述
.然后自己写了一个类,生成正常的set方法试了一下BeanUtils.copyProperties发现没问题,就有了这篇博客.
故事就是这么简短有力.

总结

Apache的BeanUtils.copyProperties(),需要提供的dest对象能提供返回void的set方法,而不是这种可以链式调用的方法或者其他返回参数的set方法,如果不是返回void的方法将无法被读取到writeMethods中,这样就没办法进行正常的BeanCopy了;总结完毕,如果你也遇到类似的问题,不一定是Apache的BeanUtils工具类,那么你也可以尝试分析一下是不是这个原因.希望能帮到刚好遇到这类问题的朋友.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值