我有一些代码可以执行以下操作:
if(object == null || object.value.equals(" ")) {
// do something
}
else {
// do something else
}
上面的内容对我来说似乎很危险,因为如果我切换两个条件的顺序或将其更改为 AND 表达式,当对象为 null 时代码将崩溃,但我也在某处读到 Java 保证操作数从左到右计算正确的。也就是说,我还读到不要认为这是真的。
我对所有这些相互矛盾的建议感到困惑,并想知道上面的代码是否构成错误。也就是说,如果这确实被认为是不好的做法,那么重新编码的最佳方法是什么?
最佳答案
在 Java 中,&&
和 ||
是短路( boolean 值!)运算符。所以一切都按假设进行。不会出现不必要的评估错误。某些语言将这些命名为然后、或-else。
boolean newGraphRequired = graphNode == null
|| gaphNode.timeStamp() != moduleNode.timeStamp();
条件变得更加简单。
关于java - 如何正确处理 OR 表达式中同时包含空检查和非空检查的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75065538/