【发布时间】:2011-08-05 16:10:29
【问题描述】:
为简单的数据 POJO 实现 equals() 和 hashCode() 会使我的代码变得混乱,并且维护起来很乏味。
哪些库会自动处理这个问题?
由于性能原因,我更喜欢字节码检测而不是 AOP 方法。
更新:已经讨论了实现equals()和hashCode()的必要性,这是我的观点:
用最少的努力提前完成,而不是在代码中挖掘,在涉及到它时添加 hC/eq 不是更好吗?
【问题讨论】:
-
没有库可以为您处理
equals- 只有您知道什么使两个对象相等。您使用的哪个 IDE 不会为您生成hashCode?为什么要对equals和hashCode进行如此多的维护? -
我知道在 Java 社区中,为基本上每个 POJO 实现这些方法是很常见的,但我不得不问:您实际上是否将所有 POJO 类型用作哈希表中的键?你在比较它们是否平等?如果不是,那为什么还要麻烦呢?
-
@Paul - NetBeans,它会生成;只是,我每次都必须重新生成,而且它会产生 10 行代码。另外,lib在生成的时候可以使用反射,为什么不能处理equals呢?
-
@Dan - 好吧,我不知道,但是各种框架都可以 - 例如网络框架。在使用了许多范例的应用程序中,跟踪什么实例在何时何地获得可能是困难的——请求之间的组件中的所有缓存、注入、序列化......
-
@VlastimilOvčáčík 是的,我认为从上下文中可以清楚地看出:我更喜欢 Lombok 方式而不是 AOP 方式。