398

次のように宣言されたJavaのメソッドを見ました:

void foo(@Nullable Object obj)
{ ... }

@Nullableここの意味は何ですか?入力が可能であることを意味しますnullか?

注釈がなくても、入力は null になる可能性があるので、それだけではないと思いますか?

4

4 に答える 4

422

メソッドが null 値を受け入れること、およびメソッドをオーバーライドする場合は null 値も受け入れる必要があることを明確にします。

また、 FindBugsなどのコード アナライザーのヒントとしても機能します。たとえば、そのようなメソッドが最初に null をチェックせずに引数を逆参照すると、FindBugs は警告を発します。

于 2012-12-28T21:57:22.487 に答える
91

この注釈は、一般的に を排除するために使用されNullPointerExceptionsます。@Nullableこのパラメータnullは このような動作の良い例は、Google Guiceにあります。この軽量の依存性注入フレームワークでは、この依存性がnull. 注釈なしで渡そうとするとnull、フレームワークはその仕事を拒否します。

さらに、注釈@Nullableとともに使用することもできます。@NotNullここでは、それらを適切に使用する方法に関するいくつかのヒントを見つけることができます。IntelliJ のコード インスペクションは、注釈をチェックし、コードのデバッグに役立ちます。

于 2012-12-28T21:57:46.747 に答える
18

ツールが異なれば、 の意味の解釈も異なる場合があり@Nullableます。たとえば、Checker FrameworkFindBugsの処理@Nullable は異なります。

于 2012-12-28T22:32:45.400 に答える