1 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
方法引用分為4類:
引用靜態(tài)方法
Class::staticMethodName
例子: (str) -> Integer.valueOf(str),對應(yīng) Integer::valueOf
引用特定對象的實(shí)例方法
Instance::instanceMethodName
例子: (collection) -> list.addAll(collection),對應(yīng) list::addAll
引用特定類型的的方法
Type::methodName
例子: (file) -> file.isDirectory,對應(yīng) File::isDirectory
引用構(gòu)造函數(shù)
Class::new
例子: () -> new Object(),對應(yīng) 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;
}
添加回答
舉報(bào)