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