2011-12-04 65 views
2

在下面的代碼中,爲什麼它沒有最後一個return語句就不能編譯。Java編譯行爲

private boolean fileExists(final File[] files, final String name) { 
    if (files == null || files.length == 0) { 
     return false; 
    } 
    for (final File file : files) { 
     return true; 
    } 
    return false; // why is this neessary? 
} 
+1

簡化的例子可以是'boolean syntaxCheck(){if(true){return true; } return false;/*爲什麼'return false'必要?* /}' – gnat

回答

1

因爲如果files爲空會發生什麼?

您需要第二個返回語句。

1

因爲files可能是空的。該方法必須在簽名中定義的所有情況下返回一個布爾值!

1

如果files是空的(畢竟編譯器不知道),那麼什麼都不會返回。

3

如果files爲空,則不進入循環,但函數需要返回boolean。這就是爲什麼

-3

如果iffor裏面的return沒有執行,我們仍然需要返回一個值。因此需要return聲明。

查看代碼,我們看到iffor中的返回將被命中,但這不能由編譯器推斷。

1

因爲你宣稱的方法。如果你不希望它返回任何東西,然後宣佈你可能需要「的方法,「無效」

private void fileExists(final File[] files, final String name) 

返回boolean值

private boolean fileExists(final File[] files, final String name) 

返回',因爲如果兩個'if'陳述都是錯誤的,會發生什麼?