Lambda的六大基础语法详解
是一个匿名函数 ,本质是"语法糖", 由编译器推断并帮你转换成为一段可以传递的代码(将代码像数据一样进行传递).
可以写出更简洁跟灵活的代码.
作为一种更紧凑的代码风格,使Java语言表达能力得到提升.
六大基础语法详解
-
/** * 语法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:有一个参数,无返回值 */ @Test public void test3(){ Consumer<String> com = (x) -> { System.out.println(x);}; com.accept("过汉水之滨忆zhi"); } -
/** * 语法3:有一个参数,无返回值下,省略括号 */ @Test public void test4(){ Consumer<String> com = x -> { System.out.println(x);}; com.accept("过汉水之滨忆zhi"); } -
/** * 语法4:有两个以上参数,有返回,并且Lambda体中有多条语句 */ @Test public void test5(){ Comparator<Integer> com = (x,y) -> { System.out.println("111"); return Integer.compare(x,y); }; } -
/** * 语法5:有两个以上参数,有返回,并且Lambda体中只有一条语句,return 和大括号都可以省略不写 * Lambda表达式的参数列表的参数类型可以省略不写。JVM编译器通过上下文推断数据类型 */ @Test public void test6(){ Comparator<Integer> com = (x,y) -> Integer.compare(x,y); }
总结
上联:左右遇一括号省
下联:左侧推断类型省
横批:能省则省