lamda表达式简介
Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。首先介绍几个基本概念
对接口的要求
虽然使用 Lambda 表达式可以对某些接口进行简单的实现,但并不是所有的接口都可以使用 Lambda 表达式来实现。Lambda 规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法
@FunctionalInterface#
修饰函数式接口的,要求接口中的抽象方法只有一个。 这个注解往往会和 lambda 表达式一起出现
函数式接口:只有一个需要被实现的接口
lamd表达式推导
/**
* 推导lamda表达式
*/
public class TestLamda {
/**
* 静态内部类
*/
static class Like2 implements ILike{
@Override
public void lamda() {
System.out.println("lamda表达式--2");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lamda();
//静态内部类
like = new Like2();
like.lamda();
/**
* 局部内部类
*/
class Like3 implements ILike{
@Override
public void lamda() {
System.out.println("lamda表达式--3");
}
}
//局部内部类
like = new Like3();
like.lamda();
//匿名内部类,没有类的名称,必须借助接口或者父类
like = new ILike() {
@Override
public void lamda() {
System.out.println("lamda表达式--4---匿名内部类");
}
};
like.lamda();
/**
* lamda表达式
*/
like = ()->{
System.out.println("lamda表达式--5");
};
like.lamda();
}
}
//定义一个函数式接口
interface ILike{
void lamda();
}
//实现类
class Like implements ILike{
@Override
public void lamda() {
System.out.println("lamda表达式");
}
}