Lambda表达式


入 希腊字母表中排序第十一位的字母,英语名称为Lambda 避免内部类定义过多 ??

其实质属于函数式编程概念

1 (params) -> expression  [表达式]
2 (params) -> statement [语句]
3 (params) -> {statement }
4 123
5 new Thread(()-> System.out.println("多线程学习")).start();

为什么要使用lambda 表达式 ??

1.避免你们内部类定义过多 ??

2.可以让你的代码看起来很简洁 ??

3.去掉了一堆没有意义的代码,只留下核心的逻辑

函数式接口的定义 ??

1.任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。 ??

2.对于函数式接口,我们可以通过lambda 表达式来创建该接口的对象。

1 public interface Runnable{
2     public abstract void run();
3 }

案例1

 1 package cn.bloghut.lambda;
 2 
 9 public class Testlambda {
10 
11     //3.静态内部类
12     static class Like2 implements ILike {
13         @Override
14         public void lambda() {
15             System.out.println(" i like lambda2");
16         }
17     }
18 
19 
20     public static void main(String[] args) {
21         ILike like = new Like();
22         like.lambda();
23 
24         like = new Like2();
25         like.lambda();
26 
27         //4.局部内部类
28         class Like3 implements ILike {
29             @Override
30             public void lambda() {
31                 System.out.println(" i like lambda3");
32             }
33         }
34 
35         like = new Like3();
36         like.lambda();
37         //5.匿名内部类
38         like = new ILike() {
39             @Override
40             public void lambda() {
41                 System.out.println(" i like lambda4");
42             }
43         };
44         like.lambda();
45 
46         //6.用lambda表达式
47         like = ()->{
48             System.out.println(" i like lambda5");
49         };
50         like.lambda();
51 
52     }
53 }
54 
55 //1.定义一个函数式接口
56 interface ILike {
57     void lambda();
58 }
59 
60 //2.实现类
61 class Like implements ILike {
62 
63     @Override
64     public void lambda() {
65         System.out.println(" i like lambda");
66     }
67 }