我有这个非常基本的代码,Eclipse给了我"潜在的空指针访问"警告/错误。
Yes
正如您在示例中所看到的,编译器知道在第一个if语句中,public class PotentialNull {
public void test(final String nullableString) {
boolean isNotNull = nullableString != null;
if (nullableString != null) {
// No problem
System.out.print(nullableString.hashCode());
}
if (isNotNull) {
// Potential null pointer access: The variable nullable may be null at this location
System.out.print(nullableString.hashCode());
}
}
}
不能为空。然而,在第二部分它并没有,我真的不会想到这太难以理解。
有人可以确认这不是我的系统/设置特有的吗?
我知道,我可以抑制警告等但我真的想知道这可能是一个错误。或者我忽略了什么?
Another question about this似乎解决了一个更复杂的情况,所以我希望我能再次提问。
答案 0 :(得分:4)
这在Eclipse错误260293中描述了几个重复项中的一个被关闭为Won&#ttt Fix。
该bug基本上表示Eclipse不跟踪变量isNotNull
和nullableString
之间的相关性,因此它不知道该值不能为空。
答案 1 :(得分:-4)
在分配布尔变量isNotNull时使用条件运算符。 改变行
boolean isNotNull = nullableString != null;
到
boolean isNotNull = (if(nullableString != null)?True:False);