Lambda的六大基础语法详解

212 阅读1分钟

Lambda的六大基础语法详解

是一个匿名函数 ,本质是"语法糖", 由编译器推断并帮你转换成为一段可以传递的代码(将代码像数据一样进行传递).

可以写出更简洁跟灵活的代码.

作为一种更紧凑的代码风格,使Java语言表达能力得到提升.

六大基础语法详解

  1. /**
     * 语法1.无参,无返回值
     */
    @Test
    public void test2(){
        int i = 0;
        //Lambda内部用到外部变量会自动转成final
        //可以使用定义数组的方式,在Lambda内对外部变量修改
        //int[] ints = new int[1];
        //ints[1] = i;
        Runnable runnable =()-> {
        //ints = ...
            System.out.println(i);
        };
    }
    
  2. /**
     * 语法2:有一个参数,无返回值
     */
    @Test
    public void test3(){
        Consumer<String> com = (x) -> { System.out.println(x);};
        com.accept("过汉水之滨忆zhi");
    }
    
  3. /**
     * 语法3:有一个参数,无返回值下,省略括号
     */
    @Test
    public void test4(){
        Consumer<String> com = x -> { System.out.println(x);};
        com.accept("过汉水之滨忆zhi");
    }
    
  4. /**
     * 语法4:有两个以上参数,有返回,并且Lambda体中有多条语句
     */
    @Test
    public void test5(){
        Comparator<Integer> com = (x,y) -> {
            System.out.println("111");
            return Integer.compare(x,y);
        };
    }
    
  5. /**
     * 语法5:有两个以上参数,有返回,并且Lambda体中只有一条语句,return 和大括号都可以省略不写
     * Lambda表达式的参数列表的参数类型可以省略不写。JVM编译器通过上下文推断数据类型
     */
    @Test
    public void test6(){
        Comparator<Integer> com = (x,y) ->  Integer.compare(x,y);
    }
    

总结

上联:左右遇一括号省

下联:左侧推断类型省

横批:能省则省