2014-10-27 172 views
2

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

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

import checkers.nullness.quals.NonNull; 

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

的IntelliJ强调了@NonNull注释与警告

不能既@NonNull和@NonNull

注释首先,我认为它与实现接口的类有关,它们也有用注解的方法。

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

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

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

+0

可能相关:http://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-use – chrylis 2014-10-27 12:31:01

回答

1

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

+1

完成:[IntelliJ问题跟踪器](https://youtrack.jetbrains.com/问题/ IDEA-131967) – jaw 2014-10-27 13:54:20

+0

openapi(intellij core)iirc中有一个内部'NonNull'注释。我不确定这是否可能是冲突所在。 – vikingsteve 2014-10-27 15:10:59

1

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

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

  1. 设置|检查|常量条件&例外|配置注释
  2. 设置|检查| @NotNull/@可空问题|配置注释

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

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

相关问题