Lambda简介
Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。
JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。
对接口的要求
虽然使用 Lambda 表达式可以对某些接口进行简单的实现,但并不是所有的接口都可以使用 Lambda 表达式来实现。Lambda 规定接口中只能有一个需要被实现的方法
Lambda标准格式
(参数类型 参数名称) ‐> { 代码语句 }
格式说明:
- 小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
- -> 是新引入的语法格式,代表指向动作。
- 大括号内的语法与传统方法体要求基本一致。
lamda表达式的产生
外部类 —》静态内部类—》局部内部类 ----》匿名内部类—》lamda
import java.util.function.Consumer;
public class Lamada {
// 静态内部类
static class neilove implements Ilove{
@Override
public void love(String name) {
System.out.println(name);
}
}
public static void main(String[] args) {
Ilove love = new love();
love.love("外部类");
Ilove neilove = new neilove();
neilove.love("静态内部类");
// 局部内部类
class jubulove implements Ilove{
@Override
public void love(String name) {
System.out.println(name);
}
}
Ilove jubulove = new neilove();
jubulove.love("局部内部类");
//匿名内部类
new Ilove(){
@Override
public void love(String name) {
System.out.println(name);
}
}.love("匿名内部类");
// lamdab表达式
Ilove loveLamda = (name) -> {
System.out.println(name);
};
loveLamda.love("lamdab表达式");
}
}
interface Ilove {
abstract void love(String name);
}
// 外部类
class love implements Ilove{
@Override
public void love(String name) {
System.out.println(name);
}
}