次のように宣言されたJavaのメソッドを見ました:
void foo(@Nullable Object obj)
{ ... }
@Nullable
ここの意味は何ですか?入力が可能であることを意味しますnull
か?
注釈がなくても、入力は null になる可能性があるので、それだけではないと思いますか?
次のように宣言された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 FrameworkとFindBugsの処理@Nullable
は異なります。