有没有一种方法可以将 Eclipse 配置为自动生成 hashCode
和 equals
并注意 @NonNull
注释?目前,我的 Eclipse 生成的代码带有不必要的 null
检查,即使在标记为 @NonNull
的字段上也是如此。
请注意,FindBugs 会发出警告 these null checks are redundant .当然我们可以添加
@edu.umd.cs.findbugs.annotations.SuppressWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE")
方法,但这似乎破坏了 FindBugs 和 @NonNull
在第一个中的作用地方。
在我看来,最好的解决方案是让 Eclipse 知道 JSR 305 并相应地生成 equals
和 hashCode
而无需 null
检查(如果它们无论如何都是 null
那么就这样吧,让 NullPointerException
自然地被抛出,因为已经发生了违反契约(Contract)的情况)。
除此之外,如果能够自定义 Eclipse 生成的 equals
和 hashCode
模板也不错。
相关问题
最佳答案
我认为那些空值检查不是是不必要的。如果将它们排除在外,则 equals
和 hashcode
将在未通过验证的对象上出现错误行为,这将导致各种问题。
跟进
Then what's the use of @NonNull annotations if you're still going to check for null everywhere anyway?
注释的要点是声明一个有效实例在该属性中没有null
,并允许基于此实现验证机制声明。
但是,没有什么要求实例在任何时候都有效。事实上,如果是这种情况,那么您在创建实例并将实例链接在一起时会遇到各种实现问题(例如)。
关于java - 在知道@NonNull 注释的Eclipse 中自动生成equals 和hashCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4351722/