无法使用@NonNull和@NonNull进行注释

时间:2014-10-27 12:10:44

标签: java intellij-idea annotations non-nullable

我正在使用IntelliJ 13.1.5和Java 8 SDK,并且我已经设置了IntelliJ内置的nullness检查器,以使用checkers.nullness.quals.NonNull作为我选择的注释。

现在,当我写一个像这样的简单类

import checkers.nullness.quals.NonNull;

public class Myclass  {
    public void doSomething(@NonNull String someString) {
    }
}

IntelliJ使用警告

@NonNull注释加下划线
  

无法使用@NonNull和@NonNull

进行注释

首先,我认为它与实现接口的类有关,该接口也有使用@NonNull注释的方法。

但我也遇到了类似上面例子的具体类。

我的下一个猜测是多个库使用相同的注释名称,并且可能存在名称冲突。但不幸的是,警告没有指定包的确切类名。如果是这种情况,则必须有一些启用隐式注释的设置。

如何在不删除注释的情况下摆脱此警告?

2 个答案:

答案 0 :(得分:1)

这看起来像是IDEA中的一个错误。由于历史原因,许多工具包会将具有某些简单名称(如NonNull)的任何注释视为等效,并且看起来IDEA可能会发生一些冲突。您应该将此报告为JetBrains的错误。

答案 1 :(得分:1)

我刚回复是一个问题,帮助我解决问题。我仍然不确定这是不是我的错,或者这是一个错误,但这是解决方案:

IntelliJ在项目设置中至少有两个位置,您可以在其中配置以下的空值注释:

  1. 设置|检查|恒定条件和例外|配置注释
  2. 设置|检查| @NotNull / @Nullable问题|配置年金
  3. 当我设置注释时,使用1.)添加它们。)不知道有2。)。这个问题是因为在2.)中,checkers.nullness.quals.NonNullNullable部分都选择了注释NonNull,这显然是错误的。 1.)一切都很好。

    要解决此问题,我从2.中的checkers.nullness.quals.NonNull部分删除了Nullable,并添加并选择了checkers.nullness.quals.Nullable