一. 方法引用: 若lambda 體中的內容有方法已經實現了,我們可以使用方法引用
(可以理解為方法引用是lambda 表示式的另外一種表現形式)
主要有三種語法格式:
物件::例項方法名
類::靜態方法名
類::例項方法名
注意:1.lambda體中呼叫方法的引數列表與返回值型別,要與函式式介面中抽象方法的函式列表和返回值型別保持一致
2.若 lambda 引數列表中的第乙個引數是 例項方法的呼叫者,而第二個引數是例項方法的引數時,可以使用classname :: method
@test
//物件:: 例項方法名
public void test1()
//類:: 靜態方法名
@test
public void test2()
//類::例項方法名
@test
public void test4()
二、 構造器引用
格式 classname::new
注意:需要呼叫的構造器的引數列表要與函式式介面中抽象方法的引數列表保持一致
@test
public void test5()
三、 陣列引用
格式 type::new;
@test
public void test7()
JDK1 8新特性 方法引用
方法引用是對lamdba的一種優化,因此,能用方法引用的地方,一定能用lamdba表示式。使用lamdba表示式,方法的引數必須是函式式介面,所以使用方法引用也要有乙個函式式介面。前提 物件已經存在,方法已經存在,就能使用了 前提 物件是已經存在的,成員方法也是已經存在的 定義乙個函式式介面 fun...
jdk1 8新特性之Optional
data public class skuvo data public class price有乙個sku物件,裡面包含乙個skuid和乙個price物件,price物件裡面有市場價和成本價。假如現在有個需求,獲取sku裡面的mallprice,並且返回。毫無疑問,npe相信每個程式設計師都不可能沒...
JDK1 8的新特性
jdk1.8之前的介面不可以有方法體,但從jdk1.8開始,介面中的方法可以帶有方法體為什麼要新增這個特性?介面就是為了定義乙個標準,這個標準要求所有的實現類實現這些抽象方法。但存在某些方法,所有的實現類 都是一樣的,索性就把這些 挪到介面中。使用的方法?通過default來修飾這個方法public...