Immutables lib将@Nullable添加到equals()方法中

时间:2017-10-15 23:18:01

标签: java findbugs immutables-library

我有一个非常简单的类并使用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类。但我不认为这是一个长期的解决方案。必须有一些我不想要的东西。

1 个答案:

答案 0 :(得分:2)

这似乎是FindBugs项目中的一个开放式错误(https://sourceforge.net/p/findbugs/bugs/1385/),所以我想说使用注释禁用警告就可以了,直到下一个版本。

This class表明SpotBugs项目是FindBugs的继承者,已经解决了这个问题。也许考虑迁移?

更新:此后,FindBugs问题已经关闭。