Java-Lamda表达式

  • λ希腊字母表中排序第十一位的字母,英语名称为Lambda
  • 避免匿名内部类定义过多
  • 其实质数据函数式编程的概念
new Thread (()->System.out.peintln("多线程学习。。。。")).start();

 

  • 为什么使用lambda表达式
  •   避免匿名内部类定义过多
  •   可以让开大看起来很简洁
  •   去掉一堆没有意义的代码,只保留核心逻辑

 

  • 理解Function Interface(函数式接口)是学习Java8 lambda表达式的关键所在。
  • 函数式接口的定义:
  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
1 public interface Runnable{
2     public abstract void run();
3 } 
  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。

 

示例代码1

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

 

示例代码2

 1 package com.wang.lambda;
 2 
 3 public class TestLambda2 {
 4 
 5     public static void main(String[] args) {
 6         Ilove love = null;
 7 
 8         //1、lambda表示简化
 9         love = (int a,int b) -> {
10             System.out.println(b+"i love you1" + a);
11         };
12 
13         //简化1、参数类型
14         love = (a,b)->{
15             System.out.println(b+"i love-->"+a);
16         };
17 
18         //简化2、简化括号(代码块)
19         love = (a,b)->{
20             System.out.println(b+"i love you-->"+a);
21         };
22 
23         //简化3、去掉花括号
24         love = (a,b)-> System.out.println(b+"i love you-->"+a);
25 
26         //总结:lambda表达式只能有一行代码的情况下才能简化为一行,如果有多行,那么就用代码块包裹;
27             //前提是接口为函数式接口。
28             //多个单数也可以去掉参数类型,要去掉就都去掉,必须加上括号。
29         love.love(520,250);
30     }
31 }
32 
33 //1、定义接口
34 interface Ilove {
35     void love(int a,int b);
36 }

 

posted @ 2022-07-20 11:30  王瑞克  阅读(32)  评论(0)    收藏  举报