Lambda表达式推导

Lambda表达式由匿名内部类简化而来

在线程的简化中很常见

下面以实现runnable方法为例逐步由各种内部类推导转化为lambda表达式

 1 package cn.ftf.thread;
 2 /**
 3  * Lambda表达式简化线程的使用Lamnda表达式的推导
 4  * @author 房廷飞
 5  *
 6  */
 7 //以这个例子为例
 8 /*
 9 public class LambdaThread implements Runnable{
10     
11     public static void main(String[] args) {
12         
13         new Thread(new LambdaThread()).start();
14         
15         for(int i=0;i<20;i++) {
16             System.out.println("一边coding");
17     }
18 }
19     @Override
20     public void run() {
21         for(int i=0;i<20;i++) {
22             System.out.println("一边听歌");
23         }
24         
25     }
26 }
27 */
28 public class LambdaThread{
29     //静态内部类
30     static public class Test implements Runnable{
31 
32         @Override
33         public void run() {
34             for(int i=0;i<20;i++) {
35                 System.out.println("一边听歌");
36                 }
37         }
38     }
39     public static void main(String[] args) {
40         
41         //在方法里的类,局部内部类
42         class Test2 implements Runnable{
43 
44             @Override
45             public void run() {
46                 for(int i=0;i<20;i++) {
47                     System.out.println("一边听歌");
48                     }
49             }
50         }
51         
52         
53         new Thread(new Test()).start();  //匿名内部类的调用
54         
55         new Thread(new Test2()).start();  //局部内部类的调用
56         
57         
58         //匿名内部类,借助接口或父类,带上实现体
59         new Thread(new Runnable() {
60             public void run() {
61                 for(int i=0;i<20;i++) {
62                     System.out.println("一边听歌");
63                     }
64             }
65         }).start();
66         
67         //jdk8对其进行简化,使用lambda表达式
68         new Thread(()->{
69                 for(int i=0;i<20;i++) {
70                     System.out.println("一边听歌");
71                     }
72         }).start();
73         
74         
75         for(int i=0;i<20;i++) {
76             System.out.println("一边coding");
77         }
78     }
79 }
80         

下面自定义一个接口,举例实现Lambda表达式:

 1 package cn.ftf.thread;
 2 
 3 public class LambdaTest01 {
 4     
 5     //丢入内部类
 6     static public class Like2 implements ILike{
 7 
 8     @Override
 9     public void lambda() {
10         System.out.println("i like lambda!  2");
11     }
12 }
13     public static void main(String[] args) {
14         
15         class Like3 implements ILike{
16 
17             @Override
18             public void lambda() {
19                 System.out.println("i like lambda!  3");
20                 
21             }
22             
23         }
24         
25         ILike like= new Like();
26         like.lambda();
27         
28         ILike like2=new Like2();    //内部类实例化对象
29         like2.lambda();
30         
31         ILike like3= new Like3();  //局部内部类实例化对象
32         like3.lambda();
33         
34         ILike like4=new ILike() {    //匿名内部类
35             public void lambda() {
36                 System.out.println("i like lambda!  4");
37             }
38         };
39         like4.lambda();
40         //lambda表达式简化
41         ILike like5=()-> {System.out.println("i like lambda!  5");
42             };
43         like5.lambda();
44     }
45 }
46 //自定义一个接口 47 interface ILike{ 48 void lambda(); 49 }
50 class Like implements ILike{ 51 public void lambda() { 52 System.out.println("i like lambda! 1"); 53 } 54 }

 

* 一个简洁直观的应用lambda表达式的例子:

 1 package cn.ftf.thread;
 2 /**
 3  * 一个简洁直观的应用lambda表达式的例子
 4  * @author房廷飞
 5  *
 6  */
 7 public class LambdaTest02 {
 8     public static void main(String[] args) {
 9         ILove love=()->{
10             System.out.println("i love lambda");
11         };
12         love.lambda();
13     }
14 }
15 interface ILove{
16     void lambda();
17 }

 

posted @ 2019-07-26 09:31  codeFlyer  阅读(412)  评论(0编辑  收藏  举报