com.google.common.base.Function
インタフェース警告apply
として定義トリガー。@Nullable入力はFindBugsのは(<a href="http://code.google.com/p/guava-libraries/wiki/Release13">Google Guava</a>から)
のFindBugsは、機能の私の実装について不平を言う:
NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE、優先順位:、優先度の高い警告で
private static final class Example implements Function<MyBean, String> { @Override @Nullable public String apply(@Nullable MyBean input) { if (null == input) { throw new NullPointerException(); } return input.field; } }
ハイ
入力がNULLでなければなりませんが、マークされていますnullableとして
このパラメータは常にNULL以外である必要がある方法で使用されますが、パラメータはNullableとして明示的に注釈が付けられています。パラメータまたはアノテーションの使用が間違っています。
私の機能はnull
入力をサポートしておらず、その場合は例外がスローされます。私が正しく理解している場合、FindBugsはこれをnull以外の要件として扱います。
私には矛盾のように見えます。入力は@Nullableですが、nullの場合、メソッド@はNullPointerExceptionをスローします。何か不足していますか?
私が見ることができる警告を取り除く唯一の方法は、手動抑制です。 (グアバコードは明らかに私のコントロール外です)。
@Nullableアノテーション、FindBugs、Guava、または自分の使い方は間違っていますか?
あなたは、署名でnullを受け入れて、本体にnull値を*拒否していると言っています。 '@ Nullable'の目的を誤解しているようです。 –
'@ Nullable'を入力パラメータに追加した唯一の理由は、' Function'インタフェースが定義するものであるということだけです。 とにかく、@ Xaerxessが示唆しているようにパラメータから '@ Nullable'アノテーションを削除しましたが、FindBugsは不満を持ち続けます。 – vitaly