寫到一半沒寫完。
一直不太了解 Java 使用 Lambdas,但每次學久久沒碰後都忘記要怎麼用,Java Lambdas 不像 JavaScript 的 Lambdas 難使用,Java 那邊還要了解 Predirect 類似這些東西
一直不太能接受 Lamdbas 為什麼能同等 Predicate
- 了解為什麼 Java 的 Interface 可以用 Lamdbas 使用?
因為 @FunctionalInterface
關係,可以看篇部分关于Java Lambda表达式看这一篇就够了,裡面有簡單範例。
那些 Interface 可以用 Lamdbas ,看以看官方文件FunctionalInterface (Java Platform SE 8 )。還滿多可以用的。
- 為什麼 Lamdbas 知道你要用的裡面哪個Method?
一般我們建立 Tread 需要實立 Runabble 介面,我們都知道會跑 Runable的 run ;一般 Predicate 介面,知道是跑 test。奇怪一個 interface 怎麼知道我要跑哪個 method呢?
其實我有一個很簡單的想法,我們會發現 Runnable 和 Predicate 透過實例 Method 去呼叫,如: ArrayList.removeIf( Predicate) 有實立方法,裡面 removeIf
只會呼叫test
,就這麼簡單。 但是不會有呼叫多個 Methods嗎?應該是不會的,我目前看這些 Interface 實立 Method 時候都是只會呼叫一個,也許這也是程式優良的地方,單一原則。
知道以上幾點,就不會懷疑自己lamdbas 會跑哪一個 method 就不會想太多。
Lambda Expressions (The Java™ Tutorials > Learning the Java Language > Classes and Objects)
六角鼠年鐵人賽 Week 16 - Spring Boot - 番外篇 Java 8 Lambda Tutorial - HackMD
Exception 處理
java 8 lambda表达式中的异常处理 - flydean - 博客园 備份圖
learn-java-streams/lambda-exception at master · ddean2009/learn-java-streams · GitHub