java – 尽管检查了null,为什么源代码分析器声称NullPointerException可能会被抛出

我正在查看我刚刚继承的一些代码,并通过源代码分析器运行.它指出我在这里面临NullPointerException的风险:

if(!(strLineData == null) && !(strLineData.isEmpty()))

虽然这显然是一种测试String的愚蠢方式(并且它已经完成了所有地方!),为什么会抛出NullPointerException?如果strLineData为null,它将不会计算if语句的后半部分,对吧?

最佳答案 你是对的.似乎该工具可能会被窃听,因为
language specification提到了这一点:

The conditional-and operator && is like & (§15.22.2), but evaluates its right-hand operand only if the value of its left-hand operand is true.

点赞