Java8 探索--Lambda


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);
	}
}
注:資源來源於網絡


發佈了46 篇原創文章 · 獲贊 5 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章