將 lambda 表示式與你自己的功能介面一起使用

Lambdas 旨在為單個方法介面提供內聯實現程式碼,並且能夠像我們使用常規變數一樣傳遞它們。我們稱之為功能介面。

例如,在匿名類中編寫 Runnable 並啟動 Thread 看起來像:

//Old way
new Thread(
        new Runnable(){
            public void run(){
                System.out.println("run logic...");
            }
        }
).start();

//lambdas, from Java 8
new Thread(
        ()-> System.out.println("run logic...")
).start();

現在,按照上面的說法,假設你有一些自定義介面:

interface TwoArgInterface {
    int operate(int a, int b);
}

你如何使用 lambda 在你的程式碼中實現這個介面?與上面顯示的 Runnable 示例相同。請參閱下面的驅動程式:

public class CustomLambda {
    public static void main(String[] args) {

        TwoArgInterface plusOperation = (a, b) -> a + b;
        TwoArgInterface divideOperation = (a,b)->{
            if (b==0) throw new IllegalArgumentException("Divisor can not be 0");
            return a/b;
        };

        System.out.println("Plus operation of 3 and 5 is: " + plusOperation.operate(3, 5));
        System.out.println("Divide operation 50 by 25 is: " + divideOperation.operate(50, 25));

    }
}