表達(dá)式本質(zhì)上是一個(gè)匿名方法。讓我們來(lái)看下面這個(gè)例子:
1
2
3
|
public int add( int x, int y) { return x + y; } |
轉(zhuǎn)成λ表達(dá)式后是這個(gè)樣子:
1
|
( int x, int y) -> x + y; |
參數(shù)類型也可以省略,Java編譯器會(huì)根據(jù)上下文推斷出來(lái):
1
|
(x, y) -> x + y; //返回兩數(shù)之和 |
或者
1
|
(x, y) -> { return x + y; } //顯式指明返回值 |
可見(jiàn)λ表達(dá)式有三部分組成:參數(shù)列表,箭頭(->),以及一個(gè)表達(dá)式或語(yǔ)句塊。
下面這個(gè)例子里的λ表達(dá)式?jīng)]有參數(shù),也沒(méi)有返回值(相當(dāng)于一個(gè)方法接受0個(gè)參數(shù),返回void,其實(shí)就是Runnable里run方法的一個(gè)實(shí)現(xiàn)):
1
|
() -> { System.out.println( "Hello Lambda!" ); } |
如果只有一個(gè)參數(shù)且可以被Java推斷出類型,那么參數(shù)列表的括號(hào)也可以省略:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
c -> { return c.size(); } public static void main(String[] args) { Arrays.asList( "a" , "b" , "d" ).forEach( e -> { System.out.print( e + "\n" ); } ); System.out.print( "\n--------------------------" ); Arrays.asList( "a" , "b" , "d" ).sort( ( e1, e2 ) -> e1.compareTo( e2 ) ); /** * 可見(jiàn)λ表達(dá)式有三部分組成:參數(shù)列表,箭頭(->),以及一個(gè)表達(dá)式或語(yǔ)句塊。 * 下面這個(gè)例子里的λ表達(dá)式?jīng)]有參數(shù),也沒(méi)有返回值(相當(dāng)于一個(gè)方法接受0個(gè)參數(shù),返回void,其實(shí)就是Runnable里run方法的一個(gè)實(shí)現(xiàn)): * () -> { System.out.println("Hello Lambda!"); } */ Thread t2= new Thread(()->{ System.out.println( "This is from an anonymous method (lambda exp).\n" ); }); t2.start(); /** * 迭代LIST */ List<String> listStr= new ArrayList<>(); listStr.add( "sss" ); listStr.add( "1111" ); listStr.forEach(e->{ if (e.equals( "sss" )){ System.out.print(e); } }); } |
以上所述是小編給大家介紹的Java 8 lambda初試,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!
原文鏈接:http://blog.csdn.net/forezp/article/details/52606056?utm_source=tuicool&utm_medium=referral