( Google Guavaの)com.google.common.base.Function
インターフェースは次のように定義されます。apply
@Nullable T apply(@Nullable F input);
このメソッドには、次のjavadocノートがあります。
@throws NullPointerException if {@code input} is null and this function does not accept null arguments
。
FindBugsは私のFunctionの実装について不平を言っています:
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;
}
}
優先度の高い警告付き:
NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE、優先度:高
入力はnull以外である必要がありますが、null可能としてマークされています
このパラメーターは常にnull以外である必要がある方法で使用されますが、パラメーターはNullableとして明示的に注釈が付けられます。パラメータまたは注釈の使用が間違っています。
私の関数は入力をサポートしておらずnull
、その場合は例外がスローされます。私が正しく理解していれば、FindBugsはこれをnull以外の要件として扱います。
私には矛盾のように見えます。入力は@Nullableですが、メソッド@throwsNullPointerExceptionがnullの場合です。私は何かが足りないのですか?
私が見ることができる警告を取り除く唯一の方法は手動抑制です。(明らかに、Guavaコードは私の制御不能です)。
@Nullableアノテーション、FindBugs、Guava、または私自身の使用法について誰が間違っていますか?