关于jdk8中方法引用的问题?
今天看书,讲道JDK8中新增了lambda,可以实现方法引用
例如:System.out::print 等于 System.out.print
但是我还是没有明白,这样做的意义是什么呢?
书中有个练习题
1,使用java.io.File中的listFiles(FileFilter)和isDirectory()这两个方法实现找出某个文件夹下所有子文件夹的功能。
2,使用lambda表达式来代替FileFilter
3,再将它改写为一个方法引用
1和2我基本上完成了,大家可以看代码
public static void main(String[] args) {
List<File> totalFiles = getSonFiles(new File("F:\\"));
}
static List<File> getSonFiles(File f){
List<File> fileList = new ArrayList<>();
File[] files = f.listFiles(file -> file.isDirectory());
if(files == null || files.length == 0){
return fileList;
}
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;
}
不知道这块代码有没有还需要改进的地方
至于3我真的是没有明白,到底该怎么改呢?
求大神带一下!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
方法引用分为4类:
引用静态方法
Class::staticMethodName
引用特定对象的实例方法
Instance::instanceMethodName
引用特定类型的的方法
Type::methodName
引用构造函数
Class::new
你这里属于第三种: