ore*_*ake 9 java reflection equals
此问题特别与覆盖具有大量字段的对象的equals()方法有关.首先,让我说这个大型对象不能在不违反OO原则的情况下分解为多个组件,因此告诉我"没有类应该有超过x个字段"将无济于事.
继续前进,当我忘记检查其中一个字段是否相等时,问题就开始了.因此,我的equals方法不正确.然后我想用反射:
--code removed because it was too distracting--
Run Code Online (Sandbox Code Playgroud)
这篇文章的目的不一定是重构代码(这甚至不是我正在使用的代码),而是得到关于这是否是一个好主意的输入.
优点:
缺点:
有什么想法吗?
Han*_*Gay 13
如果您因性能原因确实想要列入白名单,请考虑使用注释来指示要比较的字段.此外,如果您的字段没有良好的实现,则此实现将不起作用equals().
PS如果您选择这条路线equals(),请不要忘记做类似的事情hashCode().
PPS我相信你已经考虑过HashCodeBuilder和EqualsBuilder.
使用Eclipse,FFS!
删除hashCode并等于您拥有的方法.
右键单击该文件.
选择Source-> Generate hashcode并等于...
完成!不再担心反思.
对每个添加的字段重复,只需使用大纲视图删除两个方法,然后让Eclipse自动生成它们.
如果你采用反思方法,EqualsBuilder仍然是你的朋友:
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5244 次 |
| 最近记录: |