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(); } }