【從零開始學 Java 程式設計】Java 8 - Lambda 表達式
【從零開始學 Java 程式設計】 線上教學課程目錄,使用 Java 程式語言,開發應用程式。
Java 8 - Lambda 表達式
Java 8 最重大的一個更新,就是加入 Lambda 表達式,Lambda 讓程式碼看起來更簡潔也提高執行效能,原本可能需要寫很多行程式碼,可以縮減成一行,如最常見執行緒寫法:
過往傳統:
Runnable runnbale = new Runnable() {
public void run() {
System.out.println("HKT線上教室");
}
};
採用 Lambda 表達式:
Runnable runnbale = () -> System.out.println("HKT線上教室");
查看官方 Runnable 源始碼
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
Lambda 語法
//第一種:沒有大括號,可以表達單行程式區塊
(輸入參數,輸入參數,...) -> 單行邏輯程式區塊
//第二種:大括號,可以表達多行程式區塊
(輸入參數,輸入參數,...) -> { ... 多行邏輯程式區塊 ...}
四種輸入參數寫法:
第一種,無任何參數,如:
()
第二種,一個參數: (x)
(x)
第三種,多個參數並指定資料類型
(int x,int y)
第四種,多個參數(自動推斷資料型):
(x,y)
五種程式邏輯區塊表達式:
第一種,無任何程式區塊:
{}
第二種,單行不回傳值:
System.out.println("...");
第三種,多行不回傳值:
{
...
System.out.println("...");
...
}
第四種,單行,回傳值:
x+y
第五種,多行,回傳值:
{
...程式邏輯運算...
...程式邏輯運算...
...程式邏輯運算...
return x+y;
}
範例:我的計算機
MyCalc.java
@FunctionalInterface
public interface MyCalc {
void exec(int a, int b);
}
其中 @FunctionalInterface ,此注解是提醒編譯器,檢查該介面是否只有一個抽象方法,若不只一個的話,違反規則則會畫紅色蚯蚓線,提醒開發者,需進行調整。另外也可以防止未來自己或其他開發者,不小心增加方法,破壞了 Lambda 定義的 Functional Interface 即 SAM (Single Abstract Method interfaces) 介面。方法介面一定是 Interface 且裡面只能有一個抽象方法。
Main.java
public class Main {
public static void main(String[] args) {
//===傳統寫法===
MyCalc calc1 = new MyCalc() {
@Override
public void exec(int a, int b) {
System.out.println("calc1: " + (a + b));
}
};
calc1.exec(1, 2);
//===Lambda寫法===
MyCalc calc2 = (a, b) -> System.out.println("calc2: " + (a + b));
calc2.exec(1, 2);
}
}
那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~