【问题标题】:should a return statement be the last instruction within a code block?return 语句应该是代码块中的最后一条指令吗?
【发布时间】:2023-03-31 01:48:01
【问题描述】:

我真的需要帮助来理解一个 unreachable 语句在 Java 中的实际含义。我有以下内容,当我尝试编译时,我得到一个无法访问的语句错误。我在 Stackoverflow 上查看了一些关于 unreachable statements here 的类似问题,但没有人回答我的问题。我想根据 return 语句的工作原理知道为什么这个版本不能编译。

public int refundBalance()
{
    return balance;
    balance = 0;
}

我问这个是因为这里的类似问题没有给我答案。我猜测 return 应该是代码块中的最后一个语句,但我对 Java 的了解不够,无法确定我的结论。因此,任何澄清将不胜感激。

【问题讨论】:

  • return 按照它说的做,它退出方法并返回给调用者。所以return之后的任何东西无法访问...
  • 你知道return 是做什么的吗? balance = 0 永远不会被执行。把它放在那里绝对没有意义。

标签: java compilation return unreachable-statement


【解决方案1】:

当return语句被执行时,你期望接下来会发生什么!?控制权返回给调用程序,return 之后的语句永远无法执行。

看来你真的很想实现这个功能,显然退还当前余额如下:

public int refundBalance() {
    int result = balance;
    balance = 0;
    return result;
}

【讨论】:

    【解决方案2】:

    是的,return 语句应该是代码块中的最后一条语句。如果不是,则永远无法访问它下面的任何代码,因为return 语句将控制权转移到调用当前方法的方法(或首先转移到finally 块,如果它存在)。在 return 语句之后的代码块中没有任何意义,因此它是不允许的。

    【讨论】:

      【解决方案3】:

      return 语句不仅规定了当前函数返回的内容,还导致函数终止。所以return后面的语句在任何情况下都是真的不可达,不应该存在。

      【讨论】:

        【解决方案4】:

        为了使它工作,您必须将另一个变量设置为 balance,然后将 balance 设置为 0,然后返回另一个变量。

        【讨论】:

          【解决方案5】:

          return 语句导致方法退出。因此,同一代码块中return 语句之后的任何语句都不会被执行。这就是您收到此错误的原因。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-08
            • 1970-01-01
            • 2019-12-31
            • 1970-01-01
            • 2018-01-23
            • 2011-09-22
            • 1970-01-01
            • 2010-11-01
            相关资源
            最近更新 更多