我有一个非常简单的类并使用Immutables库。自动生成的代码定义了equals方法,如下所示:
@Override
public boolean equals(@Nullable Object another) {
@Nullable注释会导致以下FindBugs错误:
NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION:方法收紧归零 参数
的注释方法应该始终实现方法的契约 覆盖。因此,如果方法采用标记为的参数 @Nullable,你不应该在子类中使用a覆盖该方法 该参数为@Nonnull的方法。这样做违反了 合同,该方法应处理一个空参数。
我使用的是Immutables-value-2.5.6.jar
有没有人见过这个错误?
我通过添加以下内容暂时缓解了这个问题:
@SuppressFBWarnings
到Immutables类。但我不认为这是一个长期的解决方案。必须有一些我不想要的东西。
答案 0 :(得分:2)
这似乎是FindBugs项目中的一个开放式错误(https://sourceforge.net/p/findbugs/bugs/1385/),所以我想说使用注释禁用警告就可以了,直到下一个版本。
This class表明SpotBugs项目是FindBugs的继承者,已经解决了这个问题。也许考虑迁移?
更新:此后,FindBugs问题已经关闭。