2011-04-21 177 views
1

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

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


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

在上面的代码中,是否有任何更改要显示的吐司。据我所知,我不这样做。但是当我使用jd-gui-0.3.3.linux.i686查看.class文件时,我看到了这样的代码被创建。 有人可以澄清它。

回答

4

语句是回归后有一个良好定义的名称,在Java。这些陈述是“无法到达的代码”。代码(与返回值在同一范围内)在执行返回后执行一个例外是不可能的;代码将在finally块中执行。下面是一个例子:

 
try 
{ 
    String schmarr; 
    ... blah 
    return; 
    System.out.println("OMG! Schmarr: " + schmarr); // This is unreachable. 
} 
finally 
{ 
    System.out.println("Not so OMG. code in a finally will execute"); 
} 
+0

+1为忘记终止块 – 2011-04-21 12:17:59

+0

是的家伙tats正确,但这个问题的原因是我这么一个代码,当我查看类文件使用jd-gui(工具将.class文件转换为.java文件)。 – Dinash 2011-04-21 12:21:30

+1

你没有看到你以为你在看什么。在我有限的经验中,java反编译器似乎很好地处理了try catch块(这包括finally块)。如果您反编译代码并查看您在问题中描述的内容,那么返回后的代码看起来可能是catch或finally代码块。 – DwB 2011-04-21 12:23:45

1

不,return语句将控制权返回给调用方法。

很多人会标志Toast为不可达声明的IDE。