java8引入新的操作符“->”箭头操作符,箭头操作符将Lambda表达式分成两部分
左侧:Lambda 表达式的参数列表,对应抽象方法的参数列表
右侧:需要执行的功能,对应抽象方法要实现的功能
左右遇一括号省, 左侧推断类型省,
() ->System.out.println("Hello");
@Test public void test1() { int num = 2;//jdk 1.7前,必需是final,才能被同级调用 Runnable r = new Runnable() { @Override public void run() { System.out.println("Hello" + num); } }; r.run(); System.out.println("---------------------"); //使用Lambda表达式 Runnable r2 = () -> System.out.println("Hello Lambda"); r2.run(); }
@Test public void test2() { Consumer<String> con = (x) -> System.out.println(x); con.accept("有一个参数"); }
@Test public void test2() { Consumer<String> con = x -> System.out.println(x); con.accept("有一个参数"); }
@Test public void test4() { Comparator<Integer> com = (x, y) -> { System.out.println("函数式接口"); return Integer.compare(x, y); }; }
@Test public void test5() { Comparator<Integer> com = (x, y) -> Integer.compare(x, y); }
(Integer x,Integer y) -> Intrger.compare(x,y);
函数式接口:接口中只有一个抽象方法的接口,可用@FunctionalInterface修饰,可以检查是否是函数式接口
//接口,只有一个参数,有返回值的接口
package Clock; @FunctionalInterface public interface MyFun { public Integer getValue(Integer x); }
//需求:对一个数进行运算 @Test public void test7() { Integer num = operation(100, x -> x * x); System.out.println(num); System.out.println(operation(200, y -> y + 200)); } public Integer operation(Integer num, MyFun my) { return my.getValue(num); }
原文:https://www.cnblogs.com/wangxue1314/p/12756186.html