【发布时间】:2026-02-10 22:30:01
【问题描述】:
我将 Findbugs 与注释 javax.annotation.Nonnull 一起使用。在以下方法中
@Nonnull
public String methodA(@Nonnull String foo, @Nonnull Integer bar) {
// missing checkNotNull(foo)
// missing checkNotNull(bar)
int fooLen = foo.length(); // did not check that foo is non-null
return (bar < fooLen)? foo : null; // did not check that bar is non-null
}
参数 foo 和 bar 被声明为非 null,随后它们被取消引用,而无需首先检查它们是否为 null。 当我对代码运行 Findbugs(使用 Gradle Findbugs 插件)时,Findbugs 报告不包含预期的警告 NP_ARGUMENT_MIGHT_BE_NULL。来自 Findbugs 网站,对 NP_ARGUMENT_MIGHT_BE_NULL 的描述:
NP:方法不检查空参数(NP_ARGUMENT_MIGHT_BE_NULL)
此方法的一个参数已被标识为一个值,应始终检查它是否为空,但它在没有事先进行空检查的情况下被取消引用。
我做错了什么?
【问题讨论】: