lambda表达式

1. 首先声明一个接口

1 package cn.itcast.day_05.test_06;
2 
3 public interface Cook {
4     
5     void makeFood();
6 }

2. 在主函数中写一个方法,传入的参数为上面所定义的接口

1 public static void invokeCook(Cook cook){
2         
3         cook.makeFood();
4     }

3 三种不同的方式调用inVokeCook方法,并实现Cook接口中的方法

(1)创建接口对象,然后重写接口中方法,调用该方法,将接口对象传入该方法。

1 Cook cook = new Cook() {
2             @Override
3             public void makeFood() {
4                 System.out.println("MakeFood");
5             }
6         };
7 
8         invokeCook(cook);

(2)采用匿名内部类,直接调用invokeCook方法,在参数中进行对象创建和方法实现。

1 invokeCook(new Cook() {          
2             @Override
3             public void makeFood() {
4                 System.out.println("MakeFood");
5             }
6         });

(3)采用Lambda表达式,省略参数中创建对象的过程。

1 invokeCook(()->{
2             System.out.println("MakeFood");
3         });

tips:凡是调用一个方法,且该方法中需要传递的参数为接口,也就是说在调用该方法时需要:new+接口名{ 实现接口中的方法} 这种写法。并且接口中只有一个抽象方法。则一律使用lambda表达式

原文地址:https://www.cnblogs.com/nnnnbbbb1/p/12979151.html