【发布时间】:2015-05-30 00:32:37
【问题描述】:
return super.isAvailable() && expander != null
&& rightNotLeft ? !expander.isExpandedRight() : expander.isExpandedRight();
我的问题是,当扩展器为空时,我得到一个空指针异常。但我认为这不应该发生,因为 expander!=null 被评估为 false,并且由于使用了 AND,整个表达式应该短路并返回 false。
return super.isAvailable() && expander != null
&& (rightNotLeft ? !expander.isExpandedRight() : expander.isExpandedRight());
上面的代码(加上括号)解决了这个问题。然而,这对我来说没有意义,因为无论条件运算符中发生什么,都无法返回 true,所以它不应该短路吗?
感谢您的回复。
【问题讨论】:
-
添加括号解决了问题这一事实应该可以揭示答案 -
&&绑定比? :更紧密
标签: java logic conditional-operator short-circuiting