Lambda表达式
- λ希腊字母表排名第十一的字母英文名字为Lambda
- 避免匿名内部类定义过多
- 其实质属于函数式编程的概念
– 理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在
– 函数式接口的定义
- 任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口
- 对于一个函数式接口我们可以通过lambda表达式来创建该接口的对象
- 首先定义一个函数式接口(函数式接口就是接口中只有一个抽象方法)
- 实现接口,定义一个类实现接口对其方法进行重写
- 在main方法中创建一个接口对象执行方法(父类引用子类对象)
/*
* 推导Lambda表达式
* */
public class TestLambda1 {
public static void main(String[] args) {
Like like = new Lik();
like.like();
}
}
class Lik implements Like{
@Override
public void like() {
System.out.println("我喜欢你");
}
}
interface Like{
void like();
}
- 使用静态内部类(就是将用有对象的类放到类里边加上静态)
public class TestLambda1 {
static class Lik implements Like{
@Override
public void like() {
System.out.println("我喜欢你");
}
}
public static void main(String[] args) {
Like like = new Lik();
like.like();
}
}
interface Like{
void like();
}
- 局部内部类(在main方法里边)
public class TestLambda1 {
public static void main(String[] args) {
class Lik implements Like{
@Override
public void like() {
System.out.println("我喜欢你1");
}
}
Like like = new Lik();
like.like();
}
}
- 匿名内部类(没有类的名称必须借助接口实现)
public class TestLambda1 {
public static void main(String[] args) {
Like like=new Like() {
@Override
public void like() {
System.out.println("我喜欢你1");
}
};
like.like();
}
}
interface Like{
void like();
}
- lmbda
/*
* 推导Lambda表达式
* */
public class TestLambda1 {
public static void main(String[] args) {
Like ike = () -> {
System.out.println("222");
};
ike.like();
}
}