2014-10-27 29 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

相關問題