Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 缺少返回语句错误,即使返回语句位于方法末尾_Java - Fatal编程技术网

Java 缺少返回语句错误,即使返回语句位于方法末尾

Java 缺少返回语句错误,即使返回语句位于方法末尾,java,Java,我有这个方法来搜索文件并将它们存储到一个列表中并返回它。问题是,我得到了一个“此方法必须返回List类型的结果”,即使在它的末尾有一个List类型的返回语句 public List<String> cautaFisiere(String root) { List<String> list = new ArrayList<String>(); File[] file = new File(root).listFiles(); if (fi

我有这个方法来搜索文件并将它们存储到一个列表中并返回它。问题是,我得到了一个“此方法必须返回List类型的结果”,即使在它的末尾有一个List类型的返回语句

public List<String> cautaFisiere(String root) {
    List<String> list = new ArrayList<String>();
    File[] file = new File(root).listFiles();
    if (file == null) {
        return ;
    }
    for (File x : file) {
        if (x.getName().toLowerCase().contains(fileName.toLowerCase())) {
            System.out.println(x.getName() + " " + x.getPath());
        }
        String path = x.getPath();
        if (x.isDirectory()) {
            cautaFisiere(path);

        }

    }
    return list;
}
public List cautaFisiere(字符串根){
列表=新的ArrayList();
File[]File=新文件(根).listFiles();
if(file==null){
返回;
}
用于(文件x:File){
如果(x.getName().toLowerCase().contains(fileName.toLowerCase())){
System.out.println(x.getName()+“”+x.getPath());
}
字符串路径=x.getPath();
if(x.isDirectory()){
尾叶(径);
}
}
退货清单;
}

错误在我的代码的第5行

您可以通过返回null来修复该错误

 if (file == null) {
    return null;
 }
编辑:我想你是对的

if (file == null) {
   return list;
}


您的return语句当前不返回任何内容。使其返回空列表

这是一个更好的解决方案:

if (file == null) {
    return list;
}
如果返回
null
,则调用者必须将
null
作为特例处理。空列表(此时的
list
就是空列表)的处理方式与非空列表的处理方式基本相同

正如@Ted Hopp所建议的,抛出异常将是另一种处理方法。这取决于您是否希望/需要将
根目录为空的情况视为异常/错误。。。或者作为无关紧要的事情

  • 如果你真的希望这是一个“例外”,这是一个好主意

  • 如果不是,抛出异常将使调用堆栈上的代码做不必要的工作


如果
file==null
,那么返回什么?请查看
return-您可能被IDE或编译器告知这是与错误相关的行。您必须返回一些值,您可能希望
返回null
返回集合。emptyList()。坏主意。他应该归还(空的)list@StephenC-或者抛出异常。
if (file == null) {
    return null ;
}
if (file == null) {
    return list;
}
if (file == null) {
    return list;
}