[Java101 基礎篇] – Java 8 Lambda 的崛起

雖然Java 8 已經出來好一陣子了~  (記得是 2014的三月)
但還是有不少人會詢問什麼是 Lambda,什麼是 匿名類別 Anonymous class
藉著最近專案的機會,分享一下我們對 Lambda的了解,希望能有所幫助。

預計這一系列的文章,會有

  • Java 8 Lambda 的崛起
  • Java 8 Lambda 的語法
  • Java 8 Lambda 跟集合物件的應用
  • Java 8 Lambda 跟File I/O的應用

 

今天就先針對 Java 8 Lambda 的出現,先做個應用的說明 ~

讓我們從一個很常用的例子開始~  「使用者在畫面上按下按鈕,然後秀出 HelloWorld」
(*這部份機制,可應用在 Java Swing/FX  以及 Android )

 

以Java Swing 視窗程式為例,在 Lambda出現之前,我們可能的做法有下列幾項 ~

  1. 寫一個完全獨立的新類別  來實作 ActionListener,然後在JButton呼叫addActionListener時,當成參數傳入。

     
  2. 寫一個在main主程式 類別的內部類別(Inner class),然後在也是一樣,在JButton呼叫addActionListener時,當成參數傳入。

     
  3. 使用匿名類別(Anonymous Inner class),在JButton物件呼叫addActionListener 時,當成參數傳入

 

 

在Java 8 Lambda 出現後,我們可以用下列的寫法

jb.addActionListener( (a)-> System.out.println(“Hello”));
沒錯,就只要寫 一行,就可以有同樣的效果~~~

剩下的,就讓Java 8 Compiler 將程式碼 編譯成跟之前 actionListener 一樣的class code !!!

是不是很方便~~~ 趕快試試看囉~~

 

對了~

匿名類別 (Anonymous class)還不是很清楚?! 可以參考我們提供的教育訓練

 

 

參考資料:
https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

http://www.coreservlets.com/java-8-tutorial/#setup