lambda表示式表達更為簡潔,但是效率並不比原來高,多用於多執行緒中簡化頻繁使用的匿名內部類函式。lambda表示式並非所有場景都適用。
下面介紹lambda的使用,首先定義乙個介面:
inte***ce
ilike
作為比較,首先先介紹其他的方式實現介面,首先建乙個測試類,其中分別實現介面:
public
class
lambdatest_1
}public
static
void
main
(string[
] args)
} ilike like3 =
newlike3()
; like3.
lambda()
;//匿名內部類
ilike like4 =
newilike()
};like4.
lambda()
;}}inte***ce
ilike
/** * 外部類
*/class
like
implements
ilike
}
實現了常見的幾種介面實現方式並呼叫了介面方法,這裡看到匿名內部類,我們通過匿名內部類來引出我們的lambda表示式簡化匿名內部類:
//匿名內部類
ilike like4 =
newilike()
};like4.
lambda()
;//簡化為lambda表示式
ilike like5 =()
->
; like5.
lambda()
;
看到lambda表示式省略了new ilike,直接表達為()->,括號裡面也省略了重寫方法的方法名,直接寫實現的方法體。可以得出,lambda對只有乙個內部方法的介面進行簡化,使得**更簡潔可觀。
當然,lambda也能傳遞引數:
inte***ce
ilove
/** * lambda表示式
*/ilove love5 =
(a)-
>
;/**
* 最簡化的形態,引數只有乙個,可以省略引數括號,
* 實現方法語句只有一句時省略大括號,個人認為沒必要,保持上面的一般寫法就行了。
*/ilove love6 = a -
> a;
lambda用於執行緒new
thread((
)->).
start()
;//多執行緒使用lambda表示式
newthread((
)-> system.out.
println
("努力學習,天天向上"))
.start()
;
lambda表達就介紹這麼多,其實並不複雜,實在不能一步到位,可以先參照最上面,先用其他方式實現介面,然後一步步的對比簡化,最後就得到了lambda表示式的書寫。 Java 8 Lambda表示式 方法引用
方法引用讓你可以重複使用現有的方法定義,並向lambda一樣傳遞它們。在一些情況下,比起使用lambda表示式,它們似乎更易讀,感覺也更自然。方法引用可以被看作僅僅呼叫特定方法的lambda的一種快捷寫法。它的基本思想是,如果乙個lambda代表的只是 直接呼叫這個方法 那最好還是用名稱來呼叫它,而...
java8 lambda表示式方法引用
比圖integer intvalue,作為函式傳遞。這就是方法引用 當使用function作為方法引數時,如下 public r map functionfunction 呼叫該方法的時候,傳遞的是integer.intvalue的方法引用,如下 lambdatestlambdatest new l...
Java8之Lambda表示式
intstream.range 1000,10000 filter v v 1000 v 1000 v 1000 v 100 v 100 v 100 v 10 v 10 v 10 v foreach system.out println 上面的表示式中多處用到lamnda表示式以及stream ap...