Java编译行为

Java编译行为,java,compilation,compiler-errors,Java,Compilation,Compiler Errors,在下面的代码中,解释为什么没有最后一条return语句它就不能编译 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 fa

在下面的代码中,解释为什么没有最后一条return语句它就不能编译

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?
}

因为如果
文件
为空会发生什么


对于这种情况,您需要第二个return语句。

因为
文件可能是空的。该方法在签名中定义的所有情况下都必须返回布尔值

如果
文件
为空(编译器毕竟不知道),则不会返回任何内容。

如果
文件
为空,则不进入循环,但函数需要返回一个
布尔值。这就是为什么如果
中的
返回
如果
for
没有执行,我们仍然需要返回一个值。因此需要一个
return
语句


查看代码,我们会看到
if
中的返回或
for
中的返回将被命中,但编译器无法对此进行推断。

因为您声明该方法返回布尔值

private boolean fileExists(final File[] files, final String name)
如果您不希望它返回任何内容,则将该方法声明为“void”

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

您可能确实需要“return”,因为如果两个“if”语句都是假的,会发生什么

简化的示例可以是
boolean syntaxCheck(){if(true){return true;}return false;/*为什么需要“return false”?*/}