表達式本質上是一個匿名方法。讓我們來看下面這個例子:
public int add(int x, int y) { return x + y;}轉成λ表達式后是這個樣子:
(int x, int y) -> x + y;
參數類型也可以省略,Java編譯器會根據上下文推斷出來:
(x, y) -> x + y; //返回兩數之和
或者
(x, y) -> { return x + y; } //顯式指明返回值可見λ表達式有三部分組成:參數列表,箭頭(->),以及一個表達式或語句塊。
下面這個例子里的λ表達式沒有參數,也沒有返回值(相當于一個方法接受0個參數,返回void,其實就是Runnable里run方法的一個實現):
() -> { System.out.println("Hello Lambda!"); }如果只有一個參數且可以被Java推斷出類型,那么參數列表的括號也可以省略:
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 ) ); /** * 可見λ表達式有三部分組成:參數列表,箭頭(->),以及一個表達式或語句塊。 * 下面這個例子里的λ表達式沒有參數,也沒有返回值(相當于一個方法接受0個參數,返回void,其實就是Runnable里run方法的一個實現): * () -> { 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初試,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答