二、函式式介面
三、方法引用與構造器引用
2、構造器引用
3、陣列引用
lambda是乙個匿名函式,我們可以把lambda表示式理解為是一段可以傳遞的**。使用lambda表示式可以寫出更簡潔、更靈活的**。lambda表示式的重要用法是簡化某些匿名內部類的寫法。
在lambda表示式中它使用了乙個新的操作符 「->」,該操作符稱為箭頭操作符或 lambda操作符。
lambda表示式分為兩部分:
左側:引數列表
右側:所需執行的功能,即lambda體。
使用lambda表示式口訣:左右遇一括號省,左側推斷型別省。
// 格式一:無引數,無返回值()
-> system.out.
println
("hello lambda!");
// 格式二:有乙個引數,無返回值
(x)-
> system.out.
println
(x);
// 格式三:若只有乙個引數,小括號可以省略不寫
x -> system.out.
println
(x);
// 格式四:有兩個以上的引數,有返回值,並且lambda體中有多條語句
comparator
com =
(x, y)
->
;// 格式五:有兩個以上的引數,有返回值,lambda體中只有一條語句,return 和大括號都可以省略不寫
comparator
com =
(x, y)
-> integer.
compare
(x, y)
;// 格式六:引數列表的資料型別可以省略不寫,因為jvm編譯器通過上下文推斷出資料型別,
// 即「型別推斷」。
(integer x, integer y)
-> integer.
compare
(x, y)
;
介面中只有乙個抽象方法的介面,稱為函式式介面。可以使用@functionalinte***ce註解修飾,用這個註解可以檢查是否是函式式介面。
在只有乙個介面的抽象方法上加@functioninte***ce註解修飾。
@functionalinte***ce
public
inte***ce
inter
函式式介面引數型別返回型別包含方法
consumer(消費型介面)
tvoid
void accept(t t);
supplier(供給型介面)無t
t get();
function(函式型介面)tr
predicate(斷言型介面)
tboolean
boolean test(t t);
函式式介面引數型別返回型別包含方法
bifunction
t, u
rr accept(t t, u u);
unaryoperator
(function子介面)tt
t accept(t t);
binaryoperator
(bifunction子介面)
t, t
tt accept(t t1, t t2);
biconsumer
t, u
void
void accept(t t, u u);
tointfunction
tolongfunction
todoublefunction
(分別計算int、long、
double值的函式式介面)
tint
long
double
intfunction
longfunction
doublefunction
(引數分別為int、long、
double型別的函式式介面)
intlong
double
r介面中實現抽象方法的引數列表,與方法引用方法的引數列表相同時,就使用方法引用啦!
類名::靜態方法
類名::普通方法
物件名::普通方法
main
注:accept()方法的引數列表與println()方法的引數列表相同,所以可以使用方法引用。
main
注:第乙個引數是該方法的呼叫者,第二個引數是該方法的引數時,s1是endswith()方法的呼叫者,s2是endswith()的引數,這個時候就可以寫成string::endswith。
需要呼叫構造器的引數列表要與函式工介面中抽象方法的引數列表保持一致!
類名::new
main
型別::new
main
java8總結(未完)
1.lambda表示式與functional介面 lambda表示式 閉包 允許把函式作為乙個方法的引數 乙個lambda由逗號分隔的引數列表 符號與函式體表示 arrays.aslist a b c foreach e system.out.println e 引數e的型別是由編譯器推測出來的,同...
JAVA8新特性Stream學習中
stream是資料渠道,用於運算元據源 集合,陣列等 所生成的元素序列。集合講的是資料,流講的是計算 注 stream自己不會儲存元素 stream不會改變源物件。相反,他們會返回乙個持有結果的新的stream stream操作是延遲執行的。這意味著他們會等到需要結果的時候才執行。步驟 建立stre...
java8新特性之一lambda
lambda結合函式式介面使用,函式式介面 functional inte ce 就是乙個有且僅有乙個抽象方法,但是可以有多個非抽象方法的介面。1 可選型別宣告 不需要宣告引數型別,即直接可以寫引數,不需要宣告型別,編譯器可以自動識別型別 2 可選的引數圓括號 乙個引數可以不要圓括號,多個引數需要圓...