2013-05-06 226 views
-1

我知道我能做到這一點:void方法返回void?

void someMethod(){ 
return; 
} 

,但我得到

void someMethod(){ 
return void; 
} 

語法錯誤爲什麼後者不允許?這對我來說更有意義。

編輯:我知道什麼是無效方法,並且我根本不必從它返回(在大多數情況下可能不應該),但我不明白爲什麼我不能返回void方法無效。在我看來,在方法聲明中應該沒有關鍵字(比如構造函數),如果你能寫return的話。

+1

http://stackoverflow.com/questions/7795303/why-cant-i-return-a-void-method-call – eidsonator 2013-05-06 20:13:17

+4

它增加了額外的冗長度。所以開發者可能會說「讓我們把它縮短一點,因爲我們可能要寫它十億次。」......... – granadaCoder 2013-05-06 20:13:19

+4

爲什麼要返回任何東西?我不添加任何一行。它比兩者都短。 – duffymo 2013-05-06 20:13:51

回答

5

我認爲兩者都應該避免。我更喜歡這樣的:

void someMethod() { 
    // do stuff; no return at bottom 
} 

我很樂意爲你在JDK源代碼中找到很多看起來像這樣的方法。

+1

+1,我也是。也許在'void'方法中提到'return'語句只對流量控制有用。 – jlordo 2013-05-06 20:15:49

+0

是的,同意了。關於流量控制的好處。 – duffymo 2013-05-06 20:34:21

2

當您將方法聲明爲void時,您說這個方法沒有返回值。因此試圖返回一個值是非法的。此外,return void;有語法錯誤,因爲void不是(實際上不能是)範圍內變量的名稱。

1

當您撥打return void;時,您以錯誤的方式使用保留關鍵字。由於它不會以這種方式預期關鍵字void,它會導致錯誤。

Void類是一個不合理的佔位符類,用於保存對錶示Java關鍵字void的Class對象的引用 。

如果您希望返回的東西,那麼你就可以return null;通過參數類型Void想在這個answer,但這是標新立異。最好的辦法是完全省略return或者只是說return;

+0

現在有道理 – jlordo 2013-05-06 20:21:34

2

void是一種類型,而不是表達式,所以試圖編寫return void與嘗試編寫return int相同:語法無效。

+0

那麼沒有什麼是無效的價值? – user2097804 2013-05-06 21:01:47

0

return x;指示控制正在離開該方法並且其結果是值爲x

return;指示控件正在離開方法而沒有結果。

void類型是一個零值類型,因此對於void方法沒有x,因此return x是有意義的。

所有非void的方法必須做的三兩件事之一:

  1. 失敗永遠退出。
  2. 異常完成,出現異常。
  3. 用零或一個返回值正常結束。

由於void類型具有零個可能的值(與private多餘構建函數類不因爲null計數),存在在非void方法使得return有意義沒有可能return