java1.8学习-什么样的匿名内部类能被lambda语法代替?
lambda表达式用得最多的场合就是替代匿名内部类,而实现Runnable接口是匿名内部类的经典例子。lambda表达式的功能相当强大,用()->就可以代替整个匿名内部类。
请看代码:
@Test
public void oldRunable() {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("The old runable now is using!");
}
}).start();
}
而如果使用lambda表达式:
@Test
public void runable() {
new Thread(() -> System.out.println("It's a lambda function!")).start();
}
但问题来了,这个替代匿名内部类的方式并不是所有情况都适合。
翻阅官方文档发现有关Funtional interfaces的说法:
即:Lambda表达式只支持函数式接口。也就是只有一个抽象方法的接口