2011-04-21 95 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。