lambda表达式是java在1.8版本才引入的新特性,它的本质是一个新的接口实现方案,就和方法一样提供了一个正常的参数列表和一个使用这些参数的主体,由编译器帮助程序员使用更少的代码来实现相应的功能。
一般语法:
(arg...)->{ ... }语法简化: 如果lambda表达式的方法体只有一行,可以省略{}以及一行代码后面的;并且lambda必须在一行,如果方法需要返回返回值,return也要省略。如果只有一个参数,()也可以省略。
// 省略 {} ; return (int x, int y) -> x + y // 一个参数也时可省略() x -> 2 * x方法引用: lambda表达式可以以::的方式调用对象方法。
Test test = new Test(); // 对象::对象方法名 test::method; // 类::静态方法名 Test::staticMethod;无参无返回值的方法示例:
new Thread(()->{ System.out.println("hello world lambda"); }).start();有参数有返回值的方法示例:
Comparator<String> comparator = (String s1,String s2)->{ return s1.length()-s2.length(); };@FunctionalInterface 注解可以帮助我们进行自定义函数型接口的实现。它用来修饰函数式接口,要求接口中的抽象方法只有一个。
例如:
// 自定义函数式接口 @FunctionalInterface public interface LambdaTest{ void method(int a, int b); } // 测试类 public class Test { public static void main(String[] args) { LambdaTest lambdaTest = (int a, int b) -> { System.out.println("函数式接口测试"); }.method(); }