JDK8學習筆記(二)深識lambda表示式

2021-09-02 01:20:37 字數 1143 閱讀 4662

本篇文章再介紹一些其他關於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的話,經過下面的運算得出來的值...