表達(dá)式本質(zhì)上是一個(gè)匿名方法。讓我們來(lái)看下面這個(gè)例子:
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供成安企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為成安眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。
public int add(int x, int y) { return x + y; }
轉(zhuǎn)成λ表達(dá)式后是這個(gè)樣子:
(int x, int y) -> x + y;
參數(shù)類(lèi)型也可以省略,Java編譯器會(huì)根據(jù)上下文推斷出來(lái):
(x, y) -> x + y; //返回兩數(shù)之和
或者
(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)):
() -> { System.out.println("Hello Lambda!"); }
如果只有一個(gè)參數(shù)且可以被Java推斷出類(lèi)型,那么參數(shù)列表的括號(hào)也可以省略:
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 */ ListlistStr=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ì)創(chuàng)新互聯(lián)網(wǎng)站的支持!