Java 7 時代缺乏高效並行集合操作,手寫多線程代碼繁瑣易錯。Java 8 引入 Lambda 表達式、Stream API、預設方法等,旨在簡化並行程式設計,讓開發者專注業務邏輯而非實現機制。
核心思想:不可變值 + 純函數映射。如數學函數 f(x) = x + 1,輸入 1 永遠輸出 2,無副作用。Java 8 透過 Lambda 讓函數成為一等公民,可傳遞、組合、並行執行。
// Java 7 匿名內部類
new Thread(new Runnable() {
@Override public void run() { System.out.println("Too verbose"); }
}).start();
// Java 8 Lambda
new Thread(() -> System.out.println("Lambda rocks!")).start();
(參數) -> 運算式
(參數) -> { 陳述式; return 值; }
參數 -> 運算式 // 單參數可省略括號
() -> 運算式 // 無參數
-> 箭頭符號分隔參數與主體。return;區塊需顯式 return。只有一個抽象方法的介面,可被 Lambda 實例化。常用內建介面:
| 介面 | 方法 | 用途 |
|---|---|---|
Runnable | run() | 無參無回傳 |
Supplier<T> | get() | 無參有回傳 |
Consumer<T> | accept(T) | 有參無回傳 |
Function<T,R> | apply(T) | 轉換 |
Predicate<T> | test(T) | 判斷 |