我将bean / pojo值从一个bean复制到另一个bean。
Beanutils很好地完成了这项工作。
今天早上我碰到了导致
的财产Unknown property on class
异常。
该属性的名称是" pMoreAndMore",getter和setter是由可靠的lombok生成的,如getPMoreAndMore()
我尝试使用以下属性名称" pMoreAndMore"来复制值,但这导致了上述异常。
在网上搜索了一下但没有找到多少,所以我将我的房产重命名为" pinkyMoreAndMore" (使用生成getter,如getPinkyMoreAndMore())并使用属性名称" pinkyMoreAndMore"使用beanutils进行值复制。
这里没问题。
为什么" pinkyMoreAndMore"工作但是" pMoreAndMore"导致错误? 当涉及到camelcase等时,这可能是一个优势吗?
答案 0 :(得分:2)
Java bean规范有点像人们一共认为的那样奇特:
property - getter
-----------------
aa - getaa()
aA - getaA()
Aa - getaa()
AA - getAA()
根据specification,pMoreAndMore
的获取者应命名为getpMoreAndMore()
。这就是BeanUtils所期望的。 Lombok遵循关于属性访问者命名的一些常见错觉这一事实应被视为一个错误。
有关更长和更详细的说明,请参阅以下文章Java Tip #6 - Don't capitalize first two letters of a bean property name。