2011-12-04 7 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){trueを返します。 } return false;/*なぜ 'return false'が必要なのですか?* /} ' – gnat

答えて

1

filesが空の場合はどうなりますか?

この場合、2番目のreturn文が必要です。

1

filesが空だった可能性があるためです。このメソッドは、署名に定義されているすべての場合にブール値を返す必要があります。

1

filesが空の場合(コンパイラーは分かりません)、何も返されません。

3

filesが空の場合は、ループを入力しませんが、関数はbooleanを返す必要があります。 returnifの内側とforが実行されていない場合は

-3

は、我々はまだ値を返す必要が理由です。したがって、returnステートメントが必要です。

コードを見ると、ifまたはforのリターンがヒットしますが、これはコンパイラによって推測できません。

1

あなたはメソッドがブール値を返すことを宣言しているので

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

あなたはそれが何かを返すようにしたいいけない場合、あなたはおそらく "が必要です「無効」

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

としてメソッドを宣言両方の 'if'文が偽であれば何が起こるのでしょうか?