2

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

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

import checkers.nullness.quals.NonNull;

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

IntelliJ@NonNull用警告在注释下划线

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

首先,我认为它与实现接口的类有关,这些接口也具有用@NonNull.

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

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

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

4

2 回答 2

2

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

IntelliJ 在项目设置中有(至少)两个位置,您可以在其中配置空值注释,它们是:

  1. 设置 | 检查 | 恒定条件和例外 | 配置注解
  2. 设置 | 检查 | @NotNull/@Nullable 问题 | 配置注解

当我设置注释时,使用 1.) 添加它们,但不知道有 2.)。问题是因为在 2.) 中,在和部分checkers.nullness.quals.NonNull都选择了注释,这显然是错误的。在 1.) 一切都很好。NullableNonNull

为了解决这个问题,我checkers.nullness.quals.NonNullNullable2.) 的部分中删除并添加并选择了checkers.nullness.quals.Nullable.

于 2014-10-28T15:17:27.383 回答
1

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

于 2014-10-27T12:29:22.367 回答