Lambda表达式概述
简而言之,Lambda表达式就是用除掉冗余的代码之后的更简洁清爽的代码来完成与删减之前相同的功能与操作,这样节省了空间,一定程度上提供了程序员便利。
匿名内部类结构的优化
简单举个例子
@Test
public void Main7(){
File file=new File(".");
File[] files=file.listFiles(new FileFilter() {//方法过滤器
@Override
public boolean accept(File f) {
return f.isDirectory();//判断是否为目录,若不是的话,过滤掉
}
});
System.out.println(Arrays.toString(files));
}
这是一个用匿名内部类改写的一个方法,下面用Lambda表达式来优化它
@Test
//用lambda表达式优化
public void Main9(){
File file=new File(".");
File[] files=file.listFiles(
f->f.isDirectory()//判断是否为目录,若不是的话,过滤掉
);
System.out.println(Arrays.toString(files));
}
总结Lambda表达式的优化原则
1.()中的参数类型,可以省略,如果有多个参数,每个参数类型一起省。
2.{}中如果只有一行代码,不论这个方法有没有返回值,那么{}和return和;可以一起省略
3.()中如果只有一个参数,()可以省略,和类型一起省,()中若无参数,那()不能省。
4.优化匿名内部类的时候,new后面那部分内容可直接省略
再看个例子
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Lambda表达式优化");
}
}).start();
用Lambda表达式优化后
new Thread(() -> System.out.println("Lambda表达式优化")).start();
可以发现简化之后非常的简单,就一行代码。