在下面的代码中,为什么没有最后一个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?
}
答案 0 :(得分:3)
如果files
为空,则不进入循环,但函数需要返回boolean
。这就是为什么
答案 1 :(得分:1)
因为如果files
为空会发生什么?
您需要针对该案例的第二个return语句。
答案 2 :(得分:1)
因为files
可能是空的。该方法必须在签名中定义的所有情况下返回布尔值!
答案 3 :(得分:1)
如果files
为空(毕竟编译器不知道),则不会返回任何内容。
答案 4 :(得分:1)
因为您声明该方法返回一个布尔值
private boolean fileExists(final File[] files, final String name)
如果您不希望它返回任何内容,则将该方法声明为'void'
private void fileExists(final File[] files, final String name)
你可能确实需要'return',因为如果两个'if'语句都是假的,会发生什么?
答案 5 :(得分:-3)
如果return
和if
内的for
未执行,我们仍需要返回一个值。因此需要return
语句。
查看代码,我们看到if
或for
中的返回将被命中,但编译器无法推断出这一点。