java - 在知道@NonNull 注释的Eclipse 中自动生成equals 和hashCode

标签 java eclipse null equals jsr305

有没有一种方法可以将 Eclipse 配置为自动生成 hashCodeequals 并注意 @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 并相应地生成 equalshashCode 而无需 null 检查(如果它们无论如何都是 null 那么就这样吧,让 NullPointerException 自然地被抛出,因为已经发生了违反契约(Contract)的情况)。

除此之外,如果能够自定义 Eclipse 生成的 equalshashCode 模板也不错。

相关问题

最佳答案

我认为那些空值检查不是是不必要的。如果将它们排除在外,则 equalshashcode 将在未通过验证的对象上出现错误行为,这将导致各种问题。

跟进

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/

相关文章:

c++ - 类模板,无效的空指针(字符串)

sql - CASE WHEN NULL 在 SQLite 中产生错误结果?

java - 如何检查wordNet中是否有单词

java - AsyncTask.execute() 不等待 doInBackground 完成

java - 两个偶数和两个奇数相邻出现

java - 如何在eclipse下在glassfish上部署REST服务?

java - 输出在同一行?

java - Eclipse 似乎同时运行我的 Java JDA Discord 机器人的新版本和旧版本?为什么以及如何发生这种情况?

java - Eclipse 不编译我的 servlet

spring - 如何防止null RequestParam引发异常?