【发布时间】:2018-09-16 12:54:57
【问题描述】:
我的 Eclipse Oxygen 告诉我在此代码的第 7 行有一个 Potential null pointer access: The variable list may be null at this location。
在我看来,list 或 list2 都不可能为空。
public static <T> boolean equalsLists(List<T> list, List<T> list2, Equals<T> equals)
{
if (list == list2)
return true;
if (list == null ^ list2 == null)
return false;
if (list.size() != list2.size()) //here eclipse highlights a Potential null pointer access for both list and list2
return false;
for (int i = 0; i < list.size(); i ++)
if (equals == null && !equals(list.get(i), list2.get(i)) || equals != null && !equals.equals(list.get(i), list2.get(i)))
return false;
return true;
}
编辑:正如我在回复评论的评论中所写,很明显,使用 OR 而不是 XOR 将继续工作,并且我已经测试了 Eclipse 正确地停止预测可能的空指针。 也许我的问题还不清楚。我不是在问如何让 Eclipse 停止向我发出警告,而是在询问 Eclipse 是否有适当的理由向我发出警告。
【问题讨论】:
-
您正在编写一段有点奇怪的代码(我的意思是 XOR),所以我想它可能会被混淆。只需使用 OR,它仍然可以工作。
-
@FedericoklezCulloca 感谢您指出这一点。很明显,使用 OR 而不是 XOR 将继续工作,并且我已经测试过 Eclipse 正确地停止预测可能的空指针。也许我的问题还不清楚。我不是在问如何让 Eclipse 停止警告我,但如果有适当的理由让 Eclipse 警告我。
-
您是否有任何理由使用 XOR 运算符
^而不是标准或||?由于短路,默认值更易于阅读并且性能更好。
标签: java eclipse null-pointer