本篇文章再介紹一些其他關於lambda表示式的其他概念和細節,比如函式描述符,方法引用、lambda表示式是如何型別檢查的?lambda表示式型別推斷,復合lambda表示式的寫法。
1、函式描述符
函式式介面的抽象方法的簽名基本上就是lambda表示式的簽名。我們將這種抽象方法叫作函式描述符。例如,runnable介面可以看作乙個什麼也不接受什麼也不返回(void)的函式的簽名,因為它只有乙個叫作run的抽象方法,這個方法什麼也不接受,什麼也不返回(void)。
函式描述符也叫lambda表示式簽名
這個runnable介面的函式描述符就是:()-> void 。還有其他的函式式介面的描述符如下:
predicatet->boolean
consumert->void
functiont->r
2、lambda表示式的型別檢查、型別推斷
同乙個lambda表示式就可以與不同的函式式介面聯絡起來,只要它們的抽象方法簽名能夠相容。比如,前面提到的callable和privilegedaction,這兩個介面都代表著什麼也不接受且返回乙個泛型t的函式。
特殊void相容規則的例子:
// predicate返回了乙個boolean
predicatep = s -> list.add(s);
// consumer返回了乙個void
3、方法引用
jdk8學習總結
今天抽點時間對jdk8寫個總體的學習總結,一來當作乙個覆盤加深理解,二來也希望能夠對閱讀的朋友們有一點點幫助,同時也希望大家對文中不準確的內容予以指出。1 函式式介面與lambda表示式 首先說一下函式式介面的概念 介面中的抽象方法如果是重寫了object類的方法的話,是不參與計數的 另外如果乙個介...
JDK8新特性筆記(二) Optional
例子 public class optionaldemo01 else 執行結果 ps2optional chapter1.optional demo.person 12a3a380 optinal物件不為空 chapter1.optional demo.person 12a3a380 0 null...
JDK8原始碼解析 HashMap(二)
1.hashmap容量大小求值方法 返回2的冪次 static final int tablesizefor int cap 1 為什麼這裡需要 int n cap 1這樣呢?首先我們要明白這個方法的作用是獲取輸入容量大小最近的2的冪次值。假設你傳過來的引數cap是16的話,經過下面的運算得出來的值...