首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Java笔记(13) 简单的Lambda表达式
返回列表
发新帖
Java笔记(13) 简单的Lambda表达式
[复制链接]
发表于 2023-4-6 22:57:41
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
lambda表达式在jdk1.8引入,属于函数式编程,可以在特定的场景中省去很多没有意义的
代码
,只留下核心逻辑,使
代码
看起来更简洁。
函数式接口
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。对于函数式接口,可以通过lambda表达式来创建该接口的对象。
lambda表达式的推导
1. 正常实现
//1. 首先定义一个函数式接口
interface LambdaInterface{ void lambda(); }
//2. 实现类
class LambdaImpl implements LambdaInterface{
public void lambda(){
System.out.println("lambda test");
}
}
//3. 一般实现
public class TestLambda{
//main函数
public static void main(String[] args){
//创建一个新对象,
LambdaImpl lambda = new LambdaImpl();
lambda.lambda();
}
}
复制
代码
2. 静态内部类实现
将单独的实现类添加到Test类中,作为静态内部类,少定义了一个外部类
//1. 定义一个函数式接口
interface LambdaInterface { void lambda(); }
//2. 使用静态内部类实现
public class TestLambda {
//实现类作为静态内部类
static class LambdaImpl implements LambdaInterface {
public void lambda() {
System.out.println("lambda test!!");
}
}
public static void main(String[] args) {
new LmabdaImpl().lambda();
}
}
复制代码
3. 通过局部内部类实现
将静态内部类进一步简化为局部内部类
//1. 定义一个函数式接口
interface LambdaInterface { void lambda(); }
//2. 使用局部内部类实现
public class TestLambda{
public static void main(String[] args) {
//2.实现类作为局部内部类
class LambdaImpl implements LambdaInterface{
public void lambda(){ System.out.println("lambda test!!");}
}
}
new LambdaImpl().lambda();
}
复制代码
4. 通过匿名内部类实现
实现类是不需要类名的,只要实现方法即可,这里将其作为匿名内部类,进行类名的简化
//1. 定义一个函数式接口
interface LambdaInterface { void lambda(); }
//2. 使用匿名内部类实现
public class TestLambda{
public static void main(String[] args){
//直接在匿名内部类中实现LambdaInterface接口
LambdaTest lambda = new LambdaInterface(){
public void lambda(){
System.out.println("lambda test!!");}
}
lambda.lambda();//父类引用指向子类实例,多态
}
}
复制代码
5. lambda简化
由于接口式函数中只有一个方法,即使通过匿名内部类实现,也必须指定方法名,这是没有意义的。因此在lambda表达式中,将默认的类名和方法名省略掉
//1. 定义一个函数式接口
interface LambdaInterface { void lambda(); }
//2. 使用lambda表达式实现
public class TestLambda{
public static void main(String[] args){
//将指定类名和方法名的过程全部省略,直接使用()->{}代替
LambdaTest lambda = ()->{ System.out.println("lambda test!!");}
lambda.lambda();//父类引用指向子类实例,多态
}
}
复制代码
希望可以帮到你,还有未来的我
回复
使用道具
举报
返回列表
浏览过的版块
程序人生
物联网
Oracle
SAP
数据仓库与分析
分布式数据库
南飓风
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表