什么是Lambda表达式?
- Lambda表达式,也可称为闭包,java8的重要新特性之一。
- Lambda表达式允许在方法的参数列表中将方法作为参数。
Lambda表达式长什么样?
InterA interA = ()->{
System.out.println("无参数,无返回值");
};
Lambda表达式有什么用?
- Lambda表达式可以使代码变得更加简单紧凑。
- 在集合遍历和其他集合操作中可以极大的优化代码结构。
Lambda表达式取代了过去的哪些东西?
在过去,对接口的应用无非是继承实现和匿名内部类。lambda可以直接对只有一个抽象方法的接口进行简单实现。
为什么要改用Lambda表达式?
使代码变得更加简单紧凑,看起来更加简洁优雅。总的来就是优化代码。
Lambda表达式怎么用?
- lambda表达式可以对某些接口进行简单的实现,lambda规定这接口中只能有一个必须要被实现的方法,不是规定接口中只能有一个方法。另外: jdk8 中另有一个新属性:default,被default修饰的方法会有默认实现(即,被default修饰的接口方法必须有方法体,且该方法被继承时不强制重写),不是必须被实现的方法,所以不会影响lambda表达式的使用。
综上:lambda表达式所修饰的接口只能有一个抽象方法,可以有多个default修饰的方法。 - @FunctionalInterface
该注解专门用来修饰函数式接口的,要求接口中的抽象方法只有一个。这个注解一般会和lambda表达式一起使用。 - lambda表达式基础语法——()->{}
其中 () 用来描述参数列表(接口当中抽象方法的参数列表),{} 用来描述方法体(接口当中抽象方法的方法体),-> 为lambda运算法,读作(goes to)
public class LambdaTest {
public static void main(String[] args) {
InterA interA = ()->{
System.out.println("无参数,无返回值");
};
InterB interB = (str)->{
return "有参数,有返回值";
};
interA.begin();
System.out.println(interB.begin("参数"));
}
}
interface InterA{
default void run() {
}
public abstract void begin();
}
interface InterB{
default void run() {
}
String begin(String str);
}
Lambda表达式语法简化
- 参数类型可简化。要么全部不写参数类型,要么全部都写,不能部分简化。
- 参数小括号可简化。如果只有一个参数可以省略参数小括号。
- 方法体大括号可简化。如果方法体只有一条语句(包括return语句,此时无需写return关键字,直接写返回内容),则可以省略大括号。