これについてIntelliJの「NullableProblems」インスペクションから警告が表示されるのはなぜですか。
public class Test implements Comparable<Test> {
@Override
public int compareTo(Test o) {
return 0;
}
}
私はIntelliJ 14.1.4を使用し、Java 1.7でコンパイルしています
スクリーンショット:
引数の前に@NotNull
を追加しても役に立ちません:
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ヘルプ および このスレッド をご覧ください。