1 回答

TA贡献1943条经验 获得超7个赞
方法引用分为4类:
引用静态方法
Class::staticMethodName
例子: (str) -> Integer.valueOf(str),对应 Integer::valueOf
引用特定对象的实例方法
Instance::instanceMethodName
例子: (collection) -> list.addAll(collection),对应 list::addAll
引用特定类型的的方法
Type::methodName
例子: (file) -> file.isDirectory,对应 File::isDirectory
引用构造函数
Class::new
例子: () -> new Object(),对应 Object::new
你这里属于第三种:
static List<File> getSonFiles(File f) {
//File[] files = f.listFiles(file -> file.isDirectory());
File[] files = f.listFiles(File::isDirectory); // 方法引用
if (files == null || files.length == 0) {
return new ArrayList<>(0);
}
List<File> fileList = new ArrayList<>();
for (File currentFile : files) {
fileList.add(currentFile);
}
List<File> currentSonFiles = new ArrayList<>();
for (File currentFile : fileList) {
currentSonFiles.addAll(getSonFiles(currentFile));
}
fileList.addAll(currentSonFiles);
return fileList;
}
添加回答
举报