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 }