Java8 lambda表示式學習(1):匿名內部類
阿新 • • 發佈:2018-12-26
以往簡單地新建一個執行緒是這樣:
public class MainApp {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("lambda");
}
}).run();
}
}
在Java8中,就可以寫成這樣:
public class MainApp {
public static void main(String[] args) {
new Thread(() -> System.out.println("lambda")).run();
}
}
一個執行緒無非是想要進行某件事情,那我們把事件(方法)作為引數傳入就可以了,但是Java8之前不允許這樣做,只能通過一個介面(匿名內部類)來間接實現這個目的。在Java8中,終於可以把函式作為引數了。
不僅匿名內部類,在任何類似的想要得到一個介面的實現的時候,都可以使用這種簡介的方式。
// 這個例子可能不太符合面向物件的思想
public class MainApp {
public static void main(String[] args) {
new Thread(() -> System.out.println("lambda")).run();
AA aa = () -> System.out.println("aaa");
BB bb = (a) -> System.out.println(a);
CC cc = (a, b) -> System.out.println(a+b);
}
interface AA {
void doSomeThing();
}
interface BB {
void doSomeThing(int a);
}
interface CC {
void doSomeThing(int a, int b);
}
}