/*小括号内是形参,有点占位符的感觉,不进行赋值操作*/ @Test public void supplierTest() { int[] arr = {176, 34, 22, 544, 23}; Integer integer = arrayMax(() -> { int i = arr[0]; for(int a:arr){ if (a>i)i=a; } return i; }); System.out.println(integer); } public static Integer arrayMax(Supplier<Integer> supplier){ return supplier.get(); } @Test public void consumerTest() { String x="WERwer"; consumerAdd((msg)->{ System.out.println(msg.toLowerCase()); },x); } public static void consumerAdd(Consumer<String> consumer,String s){ consumer.accept(s); } @Test public void funtionTest() { String string="212"; Integer integer = funtionAdd(s -> { return Integer.valueOf(s); }, string); System.out.println(integer); } public static Integer funtionAdd(Function<String,Integer> function,String s){ return function.apply(s); } @Test public void predicateTest() { String string="212"; Boolean aBoolean = predicateAdd(s -> s.length() > 2 ? true : false, string); System.out.println(aBoolean); } public static Boolean predicateAdd(Predicate<String> predicate, String s){ return predicate.test(s); }
Lambda表达式和匿名内部类写法相类似,在参数位置实现接口中的抽象方法,Lambda适用的接口为函数式接口(接口中仅包含一个抽象方法)。