1. 程式人生 > >Java8 lambda表示式學習(1):匿名內部類

Java8 lambda表示式學習(1):匿名內部類

以往簡單地新建一個執行緒是這樣:

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); } }