我对 Java 编程并不陌生,但这个问题对我来说是闻所未闻的。 我有这个代码:
private static boolean isEarlierThanAndNotReminded(Callback left, Callback right) {
if(right == null) {
return !left.isReminded();
}
else {
return !left.isReminded() && (left.getAlertStart().before(right.getAlertStart()));
}
}
好吧,问题是我在“else”子句中的行上收到了空指针的报告。
当我调试时,我可以看到 right
实际上是 null,但执行仍然首先落在 if 子句中,然后控制继续进入“else”子句,在那里它获得一个空指针。
我不知道我在这里缺少什么,有什么建议吗?
最佳答案
这可能只是编译器优化和调试器处理它的方式的函数。 它会执行第一个条件“if”,但不会实际执行返回。如果你想一想,无论怎样 'right' 的值是代码需要知道 ' !left.isRe Mind()' 的值,因此必须执行该语句。我敢打赌,如果你用
开始你的函数boolean leftRemindedValue = left.isReminded();
在 if 语句之前,然后将新的 boolean 值放入 return 语句中,您将在调试器中看到不同的执行路径。
关于java - if 子句中包含多个 return 语句的函数未按预期运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173371/