狠狠撸
Submit Search
2014 Java Developer Day會後分享 Java Functional API
?
Download as PPTX, PDF
?
0 likes
?
630 views
Anke Yang
2014 Java Developer Day會後分享 Java Functional API
Read less
Read more
1 of 24
Download now
Download to read offline
More Related Content
2014 Java Developer Day會後分享 Java Functional API
1.
Java Functional API
2.
認識Lambda 在諸如Lisp、Python的語言中,Lambda是代表 ●
匿名函數(Anonymous) ● 閉包(Closure) ● 在許多程式語言之中早就有它的身影存在 在實用上 ● is a way to refactor refactored codes
3.
從JavaScript看起 當函式是物件時,我們可以: ●
根據需要將之傳遞給另一個變數參考 ● 可以傳遞給別的函式進行動作 ● 流桯中不同的演算需求,可以設計回呼函式 來抽換
4.
從JavaScript看起 這樣做可以 ●
簡化語法 ● 開放了更多不同設計方式的可能性
5.
看看闯补惫补
6.
看看闯补惫补 匿名類別 ●
程式碼太冗長,可讀性降低 ● sort在做什麼?
7.
看看闯补惫补 宣告實作介面變數 ●
原來是在做升冪排序 ● 但...
8.
看看闯补惫补
9.
Java Lambda 等號左邊在宣告變數時已指定型別,所以
10.
Java Lambda Interface
Comparator<T> →int compare(T o1, T o2) 編譯器可以從Comparator<Integer>中推斷 出n1與n2的型態,所以
11.
Java Lambda
12.
Java Lambda Lambda表式示
● 等號右邊是Lambda表示式 o 本身是中性的,不代表任何型態的實例 o 只關心方法簽署上的參數與回傳值,忽略方法名稱 ● 等號左邊為Lambda表示式的目標型態 ● 目標型態存在時,編譯器就可以據此推斷出 型態
13.
Java Lambda 函式介面(Functional
Interface) ● Comparator是一個函式介面 ● JDK8的Lambda並未導入新型態,而是就現有 interface語法來定義,作為目標型態 ● 要求僅具單一抽象方法 ● 其他如Runnable(void run())、 Callable(V call() throw Exception)等
14.
Java Lambda 最後我們可寫成
更简洁明白了
15.
Java Lambda
16.
Java Lambda 方法參照
● 重用現有方法實作,可以避免到處寫下 Lambda運算式 ● 程式碼更加清楚 ● 靜態方法(static method)與物件的實例方法 (instance method)皆可參考
17.
Java Lambda JDK8的Lambda
● 語法上的新增 ● 與既有的API相容,並增加其功能 ● 全新且更有威力的API 從現在的程式進行重構開始著手
18.
Functional API
19.
Functional API ●
Predicate<T> o T → test(T t) → boolean ● Function<T,R> o T → apply(T t) → R ● Consumer<T> o T → accept(T t) → void
20.
Functional API
21.
Functional API ●
Lazy o 處理檔案的IO,變得更有效率 ● 使用Optional來代替null ● Supplier<T> o none → get() → T
22.
Functional API 平行處理
JDK8引入Lambda目的之一,就是為了讓開 發者在開發平行程式更為簡便
23.
Functional Programming 當你在
● 重構現有的程式碼 ● 運用filter、map、reduce等 ● 回傳Optional而非null ● 開始使用parallelism以及考慮相關議題 就是在實作Functional Programming
Download