当我在findbugs中运行此命令时,会收到一个警告:
static @NonNull Object foo(@CheckForNull Object arg) {
if (arg == null) { // warning on this line
throw new NullPointerException();
}
return "something";
}
警告的详细内容如下:
缺陷:
arg
必须为非空,但标记为可空
模式ID:
NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE
,类型:
NP
,类别:
STYLE
此参数的使用方式总是要求它为非空,但该参数被显式地注释为
Nullable
是的。参数或注释的使用错误。
有人能解释芬德布格在这里抱怨什么吗?
注意,我正在使用
edu.umd.cs.findbugs.annotations.*
成员,而不是
javax.annotations.*
是的。(有区别吗?)
设置为FindBugs插件1.3.9.2009-用于Eclipse3.6.1。
马修·弗莱申建议我用
@NonNull
但是现在我遇到了这个问题:
static void blah(@NonNull Object arg) {
if (arg == null) {
throw new NullPointerException();
}
System.out.println(arg);
}
static @CheckForNull Object bleh() {
return null;
}
//...
blah(bleh()); // warning here!
警告的细节是:
错误:调用的方法返回值可能导致空指针取消引用
模式ID:
NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE
,类型:
NP公司
,类别:
风格
方法的返回值在没有
null
check,该方法的返回值通常应该检查
无效的
是的。这可能会导致
NullPointerException
当代码执行时。
我基本上想要
blah
为了满足
@CheckForNull
要求,但如果我把它的参数设为
@非空
是的。我怎样才能让它工作?