我正在使用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
注释的方法。
但我也遇到了类似上面例子的具体类。
我的下一个猜测是多个库使用相同的注释名称,并且可能存在名称冲突。但不幸的是,警告没有指定包的确切类名。如果是这种情况,则必须有一些启用隐式注释的设置。
如何在不删除注释的情况下摆脱此警告?
答案 0 :(得分:1)
这看起来像是IDEA中的一个错误。由于历史原因,许多工具包会将具有某些简单名称(如NonNull
)的任何注释视为等效,并且看起来IDEA可能会发生一些冲突。您应该将此报告为JetBrains的错误。
答案 1 :(得分:1)
我刚回复是一个问题,帮助我解决问题。我仍然不确定这是不是我的错,或者这是一个错误,但这是解决方案:
IntelliJ在项目设置中至少有两个位置,您可以在其中配置以下的空值注释:
当我设置注释时,使用1.)添加它们。)不知道有2。)。这个问题是因为在2.)中,checkers.nullness.quals.NonNull
和Nullable
部分都选择了注释NonNull
,这显然是错误的。 1.)一切都很好。
要解决此问题,我从2.中的checkers.nullness.quals.NonNull
部分删除了Nullable
,并添加并选择了checkers.nullness.quals.Nullable
。