我有这种方法来搜索文件并将它们存储到列表中并返回它。问题是我得到了一个"这个方法必须返回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;
}
错误发生在我的代码的第5行
答案 0 :(得分:2)
您可以通过返回null来解决此问题。
if (file == null) {
return null;
}
编辑:我想你是对的。
if (file == null) {
return list;
}
答案 1 :(得分:2)
public List<String> cautaFisiere(String root) {
...
List<String> list = new ArrayList<String>();
...
if (file == null) {
return ;
}
...
}
不合法,因为该方法应返回String of List。
所以你可以写:
if (file == null) {
return null ;
}
或
if (file == null) {
return list;
}
答案 2 :(得分:0)
您的退货声明目前不会返回任何内容。让它返回一个空列表
答案 3 :(得分:0)
这是一个更好的解决方案:
if (file == null) {
return list;
}
如果您返回null
,则来电者必须处理null
作为特例。一个空列表(就是list
在那个点上的那个)可以被处理(几乎)与非空列表相同。
正如@Ted Hopp建议的那样,抛出异常将是解决这个问题的另一种方法。这取决于您是否需要/需要将root
目录为空的情况视为异常/错误......或者无关紧要的事情。
如果您确实希望这是“特殊”,那么这是一个好主意。
如果没有,抛出异常会对调用堆栈中的代码进行不必要的工作。