Lambda表达式相关知识点

Lambda表达式(理解为是一个函数式接口的实例化对象)

函数式编程思想

在这里插入图片描述

Lambda表达式的标准格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

表达式练习1(抽象方法无参无返回值)

使用前提

在这里插入图片描述
适用条件,有一个接口,接口有且只有一个抽象方法

具体代码

在这里插入图片描述
依次改进代码

对于Lambda表达式,这里括号里有没有参数是看接口中的抽象方法,代码块的内容代替接口实例化子类中代码块,接口中的抽象方法本来就没有内容

在这里插入图片描述
1.lambda表达式当作接口的实例化对象,所以main方法中,调用自定义方法,并将lambda表达式当作参数传入,因为自定义方法参数是接口,所以这一步操作相当于 接口实例化子类创建接口,这样,形参e就被激活了,e是个接口对象
2.自定义方法中有语句
e.eat(),的作用,就相当于重写接口抽象方法,而具体的重写内容,也就是对行为的设置,是由lambda表达式决定的

满足1 2 条件,就可以正常进行接口的使用。

表达式练习2(抽象方法有参无返回值)

分析

在这里插入图片描述

具体代码

在这里插入图片描述
这里Lambda表达式中,括号里带有形式参数,且该操作重写了fly方法,那么现在Lambda表达式就接管了fly方法的内容,所以一切操作看Lambda表达式代码块中的内容
但是参数是由自定义方法中重写的抽象方法中传入的实参决定的

表达式练习3(抽象方法有参有返回值)

分析

在这里插入图片描述

具体代码

在这里插入图片描述
可以说明:在自定义的以接口为参数的方法中,调用抽象方法语句的作用是传入实参,这里参数传入的是10和20

Lambda表达式的省略模式

在这里插入图片描述

Lambda表达式注意事项

在这里插入图片描述
在这里插入图片描述
第二点 要有上下文环境
其中,当把Lambda表达式当作参数传入时,实际上,他的意义是“一个Runnable的一个实例化子类”

Lmabda表达式和匿名内部类的区别

总结

在这里插入图片描述
注意第三点:就是使用匿名内部类会增加一个新的class文件,占用系统空间

具体代码

首先是在主函数中定义好三个方法,对应的参数分别是具体类、抽象类、接口
在这里插入图片描述

表示匿名内部类可以实现三种方法
在这里插入图片描述

而Lambda表达式的使用需要有限制条件,参数只能是接口,并且接口中只能有一个方法
在这里插入图片描述
接口中有两个方法时,匿名内部类可以照常使用,但是因为方法定义时,只调用了show方法,没有show2方法,所以即使匿名内部类使用了show2方法,那么也不会在控制台输出,只会输出第一个show方法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值