java 8新特性之Lambda表达式(1)

Java8的最大变化是引入了Lambda表达式,Lambda表达式更像是一个匿名方法,增加Lambda表达式是为了让开发者能够编写处理批量数据的并行类库。面向对象编程是对数据进行抽象,函数式编程是对行为抽象。Lambda表达式新增了操作符 “->”。

一.参数类型推断

看看Lambda表达式的几种写法:
这里写图片描述
Javac可以根据程序的上下文在后台推断出参数的类型,所以Lambda表达式中的参数可以不用显示的指定类型(当然也可以指定类型)。这跟null类似,只有将null赋给一个变量,才能知道它的类型。

二.匿名内部类

匿名内部类是为了将代码作为数据传递,但是写法不够简便,可读性差。需要引用它所在方法里的变量时,该变量要声明为final,而在Java8中,既可以引用final声明的变量,也可以引用非final声明的变量,但是非final声明的变量只能赋值一次,否则编译器会报错。
这里写图片描述

三.函数接口

函数接口是只有一个抽象方法的接口,用作Lambda表达式的类型。函数接口可以接受两个参数,并返回一个值,还可以使用泛型。在jdk 1.8的java.util.function包里提供了一组核心函数接口。
这里写图片描述
我们可以在任意函数式接口上使用 @FunctionalInterface 注解来检查它是否是一个函数接口,如果接口不符合函数接口的定义规范,编译会报错。
将Lambda表达式当作参数传递的例子:
这里写图片描述

这里写图片描述
这里写图片描述
此外,Java 8 还内置了四大核心函数式接口:

这里写图片描述
其他的一些接口:
这里写图片描述

上一篇:eclipse集成maven
下一篇:java 8新特性之Lambda表达式(2)

猜你喜欢

转载自blog.csdn.net/lx_Frolf/article/details/81979083