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表达式只支持函数式接口。也就是只有一个抽象方法的接口

05-08 15:48