Lambda 探索
package lambda;
/*
*
下面是一個lambda表達式的重要特徵。
可選類型聲明 - 無需聲明參數的類型。編譯器可以從該參數的值推斷。
可選圓括號參數 - 無需在括號中聲明參數。對於多個參數,括號是必需的。
可選大括號 - 表達式主體沒有必要使用大括號,如果主體中含有一個單獨的語句。
可選return關鍵字 - 編譯器會自動返回值,如果主體有一個表達式返回的值。花括號是必需的,以表明表達式返回一個值。
*/
public class Java8Lambda {
public static void main(String[] args) {
Java8Lambda j = new Java8Lambda();
//lambda 聲明
MathOperation add = (a, b) -> a + b;
MathOperation sub = (a, b) -> a - b;
MathOperation mul = (a, b) -> a * b;
MathOperation div = (a, b) -> a / b;
int a = 1000, b = 1000;
System.out.println("1000 + 1000 = " + j.operate(a, b, add));
System.out.println("1000 - 1000 = " + j.operate(a, b, sub));
System.out.println("1000 * 1000 = " + j.operate(a, b, mul));
System.out.println("1000 / 1000 = " + j.operate(a, b, div));
GreetingService g1 = message -> System.out.println("Hello " + message);
GreetingService g2 = message -> System.out.println("Hello " + message);
g1.sayMessage("Jack");
g2.sayMessage("Xiele");
}
//內置接口
interface MathOperation {
double operation(int a, int b);
default double def(int a, int b) {
return a + b;
}
}
interface GreetingService {
void sayMessage(String message);
}
private double operate(int a, int b, MathOperation op){
return op.operation(a, b);
}
}
注:資源來源於網絡