【问题标题】:Statements after return退货后的声明
【发布时间】:2011-08-10 06:34:54
【问题描述】:

大家好,这个问题可能看起来很愚蠢。但我仍然必须知道这个问题的答案

public void onCreate(Bundle paramBundle)
{
    super.onCreate(paramBundle);


    while (true)
    {
      return;
      Toast.makeText(this, "GPS Tracker running in the background", 0).show();
    }
}

在上面的代码中,要显示的 toast 是否有任何变化。据我所知,我不这么认为。但是当我使用 jd-gui-0.3.3.linux.i686 查看 .class 文件时,我看到了这样的代码。 谁能说清楚。

【问题讨论】:

    标签: android return


    【解决方案1】:

    return 之后的语句在 Java 中具有明确定义的名称。此类声明是“无法访问的代码”。代码(与所讨论的返回在同一范围内)不可能在返回执行后执行,但有一个异常; finally 块中的代码将执行。这是一个例子:

    尝试 { 字符串 schmarr; ... 废话 返回; System.out.println("天啊!施马尔:" + schmarr); // 这是无法访问的。 } 最后 { System.out.println("不是这样 OMG。finally 中的代码会执行"); }

    【讨论】:

    • 是的,伙计们说得对,但这个问题的原因是当我使用 jd-gui(将 .class 文件转换为 .java 文件的工具)查看类文件时,我是如此这样的代码。跨度>
    • 你没有看到你认为你看到的东西。在我有限的经验中,java 反编译器似乎不能很好地处理 try catch 块(这包括 finally 块)。如果您反编译代码并查看您在问题中描述的内容,那么返回“之后”的代码似乎可能位于 catch 或 finally 块中。
    • 是的 DwB wat 你说的是一些正确的我用另一个反编译器转换了同一个 .class 文件并找到了 else 语句并且相邻的行被包裹了一段时间( true) 后跟一个 return 语句。谢谢各位..
    【解决方案2】:

    不,return 语句会将控制权交还给调用方法。

    许多 IDE 会将 Toast 标记为无法访问的语句。

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2013-07-11
      • 2022-11-18
      • 2017-06-06
      • 1970-01-01
      • 2016-06-23
      • 2012-01-02
      • 2013-07-13
      • 1970-01-01
      相关资源
      最近更新 更多