Lambda表达式(简化代码)
Lambda简介(java8 新特性)
-
Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。
-
JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。
-
语法形式为 () -> {},其中 () 用来描述参数列表,{} 用来描述方法体,-> 为 lambda运算符 ,读作(goes to)。
Lambda 语法简化
public class TestLambda1 {
//3.静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda2");
}
}
public static void main(String[] args) {
ILike iLike = new Like();
iLike.lambda();
iLike = new Like2();
iLike.lambda();
//4.局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda3");
}
}
iLike = new Like3();
iLike.lambda();
//5.匿名内部类,没有类的名称,必须借助接口或父类
iLike = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
iLike.lambda();
//6.用lambda简化
iLike = () -> {
System.out.println("I like lambda5");
};
iLike.lambda();
}
}
//1.定义一个函数式的接口
interface ILike{
void lambda();
}
//2.实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda");
}
}
Java 8 的 Lambda 语法:
(参数列表) -> {函数体}
对于无参的 Lambda 表达式:
() -> {函数体}
对于单个参数的 Lambda 表达式:
(x) -> {函数体}
它可以简化为:
x -> {函数体}
对于多个参数的 Lambda 表达式:
(x,y,z) -> {函数体}
如果函数体只有一行代码,则可以省略函数体的大括号。另外对于参数列表,由于 Java 的编译器可以进行类型推断,所以不需要声明参数的类型。
在 Java 8 中,Lambda 的创建是通过字节码指令invokedynamic来完成的,减少了类型和实例的创建消耗。在 Java 8 之前,我们使用匿名类,但是匿名类需要创建新的对象。

浙公网安备 33010602011771号