java - if 子句中包含多个 return 语句的函数未按预期运行?

标签 java android if-statement

我对 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/

相关文章:

java - 两个线程写入同一个文件

android - 如何使用 Jetpack Compose 请求权限?

android - 按钮需要填充父单选按钮

java - org.apache.http.client. Fluent 损坏 URL

java - 组合框未显示

java - 如何以通用方式使用算术运算来减少原始数组?

java - Android fragment 在启动时崩溃

python - 如何让 if 语句接受三个参数中的任何一个而不在 Python 中全部为真

javascript - 缩短 long if else 以根据值从数组中获取元素

python - 比较列表;返回唯一列表。 - Python