【发布时间】:2016-10-25 08:50:15
【问题描述】:
我有这段非常基本的代码,Eclipse 给了我“潜在的空指针访问”警告/错误。
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());
}
}
}
正如您在示例中看到的,编译器知道在第一个 if 语句中,nullableString 不能为空。然而,在第二次它没有,我真的不会认为这太难弄清楚了。
有人可以确认这不是特定于我的系统/设置吗?
我知道,我可以抑制警告等,但我真的想知道这是否可能是一个错误。还是我忽略了什么?
Another question about this 似乎解决了一个更复杂的情况,所以我希望没关系,我再次询问。
【问题讨论】:
-
制作
isNotNullfinal。我怀疑它认为isNotNull可以在声明和使用之间更改。 -
...虽然它是本地的并且没有代码更改它,但 Eclipse 应该足够聪明,知道它没有更改...
-
如果您将
nullableString设为非最终结果,第一种情况是否仍然有效? -
我投票结束这个问题作为离题,因为它基本上是一个 Eclipse 错误报告,而不是一个可回答的 SO 问题。
-
如果将 isNotNull 替换为其定义 (nullableString != null) 会发生什么?
标签: java eclipse pointers null