Java8-lambda表达式

Lambda表达式(也称为闭包)是Java 8中新增的功能

lambda表达式允许把函数作为一个方法的参数传递给方法中,或者把代码看成数据,或者就是一系列的运算逻辑操作。

lambda基于函数式接口,当然有一些不需要显示声明函数式接口,直接在方法中写函数实现

lambda有好几种写法,举例如下

 Arrays.asList( "a", "b", "d" ).forEach( e -> System.out.println( e ) );
 Arrays.asList( "a", "b", "d" ).sort( ( e1, e2 ) -> {
        int result = e1.compareTo( e2 );
        return result;
} );
// 类型声明
MathOperation addition = (int a, int b) -> a + b;
//函数式接口
interface MathOperation {
      int operation(int a, int b);
}
 //引用接口的方法
private int operate(int a, int b, MathOperation mathOperation){
      return mathOperation.operation(a, b);
}
//使用
tester.operate(10, 5, addition)

注意事项:

  1. lambda 表达式引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误
  2. 类局部变量和方法体内局部变量最好都是final类型,不可更改
  3. lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义),必须保证代码中没有更改该变量的操作,否则报错
  4. 在 Lambda 表达式当中不允许声明一个与局部变量同名的参数或者局部变量。
    这里写图片描述

lamdba表达式的使用场景:

引用:
https://www.cnblogs.com/figure9/p/java-8-lambdas-insideout-language-features.html
http://www.importnew.com/11908.html#lambdaAndFunctional
http://www.runoob.com/java/java8-lambda-expressions.html

猜你喜欢

转载自blog.csdn.net/shuaishuai1234/article/details/81737179