Java 8 新加入的功能 Lambda 表達式,讓你可以將函式做為方法的參數,如果你寫過 JavaScript 應該會覺得有點像。Lambda 有許多的優點,可以簡化匿名內部類別、偵聽器及事件處理等的冗長程式碼,讓它們不只變短也易讀。另外還可以實體化前面介紹的函式介面、並且以更方便的方式操作集合等等。
Lambda expression 的樣子:
參數 -> 表達式
就是這麼簡單,讓 Java 變得不再那麼囉嗦。參數的部份:
- ():表示無參數。
- 變數:表示有一個輸入,例如:x
- (變數1, 變數2):表示有兩個變數並省略型別:例如:(x, y)
- (型別 變數1, 型別 變數2):表示兩個變數並指定型別:例如:(int x, int y)
- 單一參數不需括號,零或多個參數則需括號。
表達式的部份:
- {}:表示不執行任何事。
- System.out.println(x+y);:輸出到console的單行敍述且不回傳值。
- x+y:單一運算式且回傳值,單行敍述會自動回傳值。
- {...}:多行敍述,若要回傳值必須加 return。
範例:Runnable 的簡化
舊式寫法:Runnable run = new Runnable() {
@Override
public void run() {
System.out.print("Runnable");
}
};
Thread t = new Thread(run);
t.start();
Runnable 的部份要寫 6 行,如果改用 Lambda expression:
Runnable run = () -> System.out.print("Hello Lambda~");
Thread t = new Thread(run);
t.start();
現在 Runnable 的部份只要一行,實際上還可以更簡化:
new Thread(() -> System.out.println("Hello Lambda~")).start();
原本舊的寫法要花掉 8 行,現在只要 1 行就完成了。寫得越少就越容易維護,而且程式碼反而更好讀,不會有多餘的關鍵字來甘擾。
本文網址:http://blog.tonycube.com/2015/10/java-java8-2-lambda-expression.html
由 Tony Blog 撰寫,請勿全文複製,轉載時請註明出處及連結,謝謝 😀
由 Tony Blog 撰寫,請勿全文複製,轉載時請註明出處及連結,謝謝 😀
我要留言
留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。