3

我有一个非常简单的类并使用 Immutables 库。自动生成的代码定义了 equals 方法,如下所示:

  @Override
  public boolean equals(@Nullable Object another) {

@Nullable 注释会导致以下 FindBugs 错误:

NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION:方法收紧参数上的空值注释

方法应该始终实现它覆盖的方法的协定。因此,如果方法采用标记为@Nullable 的参数,则不应在子类中使用该参数为@Nonnull 的方法覆盖该方法。这样做违反了该方法应处理空参数的约定。

我正在使用 Immutables-value-2.5.6.jar

有没有人看到这个错误?

我通过添加以下内容暂时缓解了这个问题:

@SuppressFBWarnings

到不可变类。但我不认为这是一个长期的解决方案。一定还有其他我想念的东西。

4

1 回答 1

4

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

这个类表明作为 FindBugs 的继承者的 SpotBugs 项目已经解决了这个问题。也许考虑迁移?


更新: FindBugs 问题已经关闭。

于 2017-10-20T08:11:54.737 回答