55

2つの違いは何ですか?どちらも、値がnullである可能性があることを意味しているようであり、それに応じて処理する必要があります。つまり、nullをチェックする必要があります。

更新: 上記の2つの注釈は、JSR-305 / FindBugsの一部です:http: //findbugs.sourceforge.net/manual/annotations.html

4

3 に答える 3

34

あなたが追加したリンクからそれはかなり明白だと思います: を@CheckForNull使用し、値を使用するコードが をチェックしない場合null、FindBugs はそれをエラーとして表示します。

FindBugs は無視し@Nullableます。

実際には、この注釈は、包括的な注釈をオーバーライドする場合にのみ役立ちますNonNull

@CheckForNull値を常にチェックする必要がある場合に使用します。@Nullableどこで使ってnullもOK。

編集:@CheckForNull現時点では十分にサポートされていないようですので、それを避けて使用することをお勧めします(どの @NotNull Java アノテーションを使用する必要がありますか?@NonNullも参照してください)。もう 1 つのアイデアは、FindBugs の開発者と直接連絡を取って、ドキュメントの不一致について意見を求めることです。

于 2012-09-06T14:05:42.543 に答える
5

IntelliJ Idea@javax.annotation.Nullableはデフォルトでサポートされており、@Nullable引数を逆参照したり値を返したりしようとすると警告が発生します。

@ alexander-pavlov、@javax.annotation.CheckForNull「一定の条件と例外」インスペクションの構成に追加できます。File->Settings->Inspections->Probable bugs->Constant conditions & exceptions->Configure annotations に移動します。

上記の彼の回答で述べた@lbalazscs@CheckForNullよりも明確な意味があるので、これを行うことを好みます。@Nullable

于 2012-09-20T07:18:54.697 に答える