Java编译行为
在下面的代码中,解释为什么没有最后一条return语句它就不能编译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
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”?*/}