私はJavaでいくつかのメソッドを宣言した:
void foo(@Nullable Object obj)
{ ... }
ここで@Nullable
の意味は何ですか?入力がnull
になる可能性があるということですか?アノテーションがなければ、入力はまだnullになる可能性があるので、それだけではないと思いますか?
ありがとう
メソッドがnull値を受け入れること、およびメソッドをオーバーライドする場合はnull値も受け入れるべきであることが明確になります。
FindBugs のようなコードアナライザーのためのヒントとしても役立ちます。たとえば、そのようなメソッドが最初にnullをチェックせずに引数を間接参照した場合、FindBugsは警告を発します。
このアノテーションはNullPointerExceptions
を排除するためによく使われます。 @Nullable
は、このパラメーターがnull
である可能性があるとよく言っています。そのような振る舞いの良い例は Google Guice にあります。この軽量の依存性注入フレームワークでは、この依存性がnull
である可能性があることをあなたは話します。アノテーションを付けずにnull
を渡そうとすると、フレームワークはその仕事を拒否します。
もっと@Nullable
は@NotNull
アノテーションと一緒に使われるかもしれません。ここであなたは 見つけることができます /それらを正しく使う方法のヒント。 IntelliJのコード検査は注釈をチェックし、コードのデバッグに役立ちます。
ツールが異なれば、@Nullable
の意味が異なって解釈される可能性があります。たとえば、 Checkerフレームワーク および FindBugs は@Nullable
を別々に処理します 。