Lambda 表达式简介

0.预备知识

  函数式接口:只包含一个抽象方法的接口。

  内部类:静态、成员内部类

      局部内部类

      匿名内部类

1.代码

 1 /**
 2  * 函数式编程:
 3  *  lambda表达式前提:
 4  *      必须是函数式接口。
 5  */
 6     //1.定义一个函数接口
 7 interface GetFx{
 8     void getFx(int x);
 9 }
10     //2.0 外部类实现   
11 class Fx1 implements GetFx{
12     @Override
13     public void getFx(int x){
14         System.out.println("f(" + x + ")=" + Math.sin(x));
15     }
16 }
17 public class LambdaDemo {
18     //2.1 静态成员内部类实现
19     static class Fx2 implements GetFx{
20         @Override
21         public void getFx(int x) {
22             System.out.println("f(" + x + ")=" + Math.cos(x));
23         }
24     }
25     public static void main(String[] args) {
26         GetFx fx;
27         fx = new Fx2();
28         fx.getFx(1);
29         
30         //2.2 局部内部类实现
31         class Fx3 implements GetFx{
32             @Override
33             public void getFx(int x) {
34                 System.out.println("f(" + x + ")=" + Math.abs(x));
35             }
36         }
37         fx = new Fx3();
38         fx.getFx(1);
39         
40         //2.3 匿名内部类实现
41         fx = new GetFx() {
42             @Override
43             public void getFx(int x) {
44                 System.out.println("f(" + x + ")=" + Math.sqrt(x));
45             }
46         };
47         fx.getFx(1);
48         
49         //3.0 lambda简化
50         fx = (int a)->{
51             System.out.println("1:"+a);
52         };
53         fx.getFx(1);
54 
55         //3.1 简化参数类型(多参数要简化都简化)
56         fx = (a)->{
57             System.out.println("2:"+a);
58         };
59         fx.getFx(1);
60 
61         //3.2 简化括号(单参数,多参数必须加括号)
62         fx = a->{
63             System.out.println("3:"+a);
64         };
65         fx.getFx(1);
66 
67         //3.3 简化花括号(只适用单行代码)
68         fx = a->System.out.println("4:"+a);
69         fx.getFx(1);
70     }
71 }

以上从    外部类-->静态内部类-->局部内部类-->匿名内部类-->lambda表达式   展示了lambda表达式的简化过程。

posted @ 2021-02-19 18:34  HickeyZhang  阅读(87)  评论(0)    收藏  举报