Java——Lambda表达式

本文通过实例详细介绍了Java中Lambda表达式的使用方法,包括Eatable、Flyable和Addable等接口的应用场景,展示了如何通过Lambda表达式简化代码并提高程序的可读性和可维护性。

其实是在学习Lambda表达式过程中对于接口作为方法参数的使用产生了一些疑问,在这里记下:

 1 /**
 2  * Created by BoGummyYoung on 2017/2/20.
 3  * 示范Lambda表达式的几种简化写法
 4  */
 5 interface Eatable
 6 {
 7     void taste();
 8 }
 9 interface Flyable
10 {
11     void fly(String weather);
12 }
13 interface Addable
14 {
15     int add(int a, int b);
16 }
17 public class LambdaQS
18 {
19     //调用该方法需要Eatable对象
20     public void eat(Eatable e)
21     {
22         System.out.println(e);
23         e.taste();
24     }
25     //调用该方法需要Flyable对象
26     public void drive(Flyable f)
27     {
28         System.out.println("我正在驾驶:" + f);
29         f.fly("【碧空如洗的晴日】");
30     }
31     //调用该方法需要Addable对象
32     public void test(Addable add)
33     {
34         System.out.println("5 与 3的和为:" + add.add(5,3));
35     }
36     public static void main(String[] args)
37     {
38         LambdaQS lq = new LambdaQS();
39         //Lambda表达式的代码块只有一条语句,可以省略花括号
40         lq.eat(() -> System.out.println("苹果的味道不错!"));
41         //Lambda表达式的形参列表只有一个形参,可以省略圆括号
42         lq.drive(weather ->
43         {
44             System.out.println("今天的天气是:" + weather);
45             System.out.println("直升机飞行平稳");
46         });
47         lq.drive(new Flyable(){
48 
49             @Override
50             public void fly(String weather) {
51                 System.out.println("今天的天气是:" + weather);
52                 System.out.println("直升机飞行平稳");
53             }
54         });
55         //Lambda表达式的代码块只有一条语句,可以省略花括号
56         //代码块中只有一条语句,即使该表达式需要返回值,也可以省略return关键字
57         lq.test((a , b) -> a+b);
58     }
59 }

 

 

此处的运行结果:

 

Q:关于重写方法里面的weather和drive方法里的f.fly("【碧空如洗的晴日】");定义的weather关系。

A:首先,drive方法里面接受一个Flyable类型的参数f,然后执行的f.fly方法,但是这个fly方法具体要执行的内容,就是重写的内容。

还是直接贴图方便。

总结一下就是weather在drive中调用f.fly方法的时候已经定义,而这个fly方法要实现就要在调用drive方法的时候重写,此时的重写不会改变weather的值,默认即是在drive中定义的weather的值。

除非重新再调用drive的时候定义weather的值,才会改变weather的值,如下:

lq.drive(new Flyable(){

            @Override
            public void fly(String weather) {
                weather = "我是改了的天气";
                System.out.println("今天的天气是:" + weather);
                System.out.println("直升机飞行平稳");
            }
        });

这时的运行结果为:

转载于:https://www.cnblogs.com/bolumiere/p/6420389.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值