Java 缺少返回语句错误,即使返回语句位于方法末尾
我有这个方法来搜索文件并将它们存储到一个列表中并返回它。问题是,我得到了一个“此方法必须返回List类型的结果”,即使在它的末尾有一个List类型的返回语句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
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;
}