web-dev-qa-db-ja.com

IntelliJの不明瞭な検査警告「NullableProblems」

これについてIntelliJの「NullableProblems」インスペクションから警告が表示されるのはなぜですか。

public class Test implements Comparable<Test> {
    @Override
    public int compareTo(Test o) {
        return 0;
    }
}

私はIntelliJ 14.1.4を使用し、Java 1.7でコンパイルしています

スクリーンショット:

enter image description here

引数の前に@NotNullを追加しても役に立ちません:

enter image description here

30
traveh

Comparable.compareToから:

@throws NullPointerException if the specified object is null

そのため、IntelliJは、オブジェクトがnullであってはならず、@NotNull注釈を追加することを知っています 自動的に

IntelliJ IDEAはSDKとライブラリのバイトコードを注意深く調べ、これらの注釈を自動的に推測するため、後でソースコードを分析してnullを見落とした場所を見つけることができます。

オーバーライドされたメソッドにはこのアノテーションが含まれていないため、overridesこの動作によりパラメーターがnull可能になります-Comparableインターフェイスの規約に反します。

これは、パラメーターの前に@NotNullを追加することで解決できます。

を押してこの検査を無効にすることもできます Alt + Enter、ポップアップメニューで警告を選択し、サブメニューでDisable inspectionを選択します。

@NotNull/@NonNullアノテーションの詳細については、 Webヘルプ および このスレッド をご覧ください。

23
Darek Kay

これはIntelliJでグローバルに設定できますIDEA簡単に、個人的には推奨される方法です。必要に応じて、独自の注釈を追加できます。
i.e。 javax.validation.constraints.NotNull

設定へのパス:
Settings > Editor > Inspections > @NotNull/@Nullable problems > Configure annotations

いくつかのスクリーンショット: enter image description hereenter image description here

12
magiccrafter