【原标题:Android中Lambda表达式进化 Java-函数式编程】Lambda表达式
java12正式发布,咱们还没把java8搞清楚呢,说什么合格的java开发者。今天就开始整理一些java8的新特性。lambda表达式
lambda表达式的标准形式
(parameters) -> expression
或
(parameters) ->{statements; }
以下是lambda表达式的重要特征:
· 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
· 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
· 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
· 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
public class Lambda { public static void main(String[] args) { //没有参数时小括号一定要打,代码块需要打大括号 //更加简单的实现接口 Runnable r = () -> { System.out.println("test"); System.out.println("test2"); }; new Thread(r).start(); //一个参数时,可以打小括号,也可以不打 //集合遍历也可以使用lambda表达式 //一句代码时可以打大括号,也可以不打 Listints = Arrays.asList(1, 2, 3, 4); ints.forEach(e -> System.out.println(e)); //多个参数,参数的小括号一定要打 //更加简单的实现接口 opration o = (a, b) -> { System.out.println(a + b); return a + b; }; o.add(1, 2); } interface opration{ int add(int a, int b); }}
Lambda 表达式主要用来定义行内执行的方法类型接口,当一个接口中存在多个抽象方法时,如果使用lambda表达式,并不能智能匹配对应的抽象方法,因此引入了函数式接口的概念,函数式接口就是只定义了一个抽象方法的接口
Lambda 表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。