没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
www.javakc.com 汇才同飞教育
第 1 页
1 Lambda 表达式
1.1 什么是 Lambda
我们知道,对于一个 Java 变量,我们可以赋给其一个“值”。
如果你想把“一块代码”赋给一个 Java 变量,应该怎么做呢?
比如,我想把右边那块代码,赋给一个叫做 aBlockOfCode 的 Java 变量:
在 Java 8 之前,这个是做不到的。但是 Java 8 问世之后,利用 Lambda 特性,就可以做
到了。
int aNumber=1208;
String aString="javakc";
boolean aBoolean= aString.startsWith("J");
aBlockOfCode
public void doSomething(String s) {
System.out.println(s);
}
www.javakc.com 汇才同飞教育
第 2 页
当然,这个并不是一个很简洁的写法。所以,为了使这个赋值操作更加简练, 我们可以移除
一些没用的声明。
aBlockOfCode = public void doSomething(String s) {
System.out.println(s);
}
aBlockOfCode = public void doSomething(String s) {
System.out.println(s);
}
public 是多余的
aBlockOfCode = void doSomething(String s) {
System.out.println(s);
}
方法的名称是多余的
aBlockOfCode = void (String s) {
System.out.println(s);
}
编译器可以自己判断返回类型
www.javakc.com 汇才同飞教育
第 3 页
这样,我们就成功的非常优雅的把“一块代码”赋给了一个变量。而
“这块代码”,或者说“这个被赋给一个变量的函数”,就是一个 Lambda 表
达式。
但是这里仍然有一个问题,就是变量 aBlockOfCode 的类型应该是什
么?
aBlockOfCode = (String s) {
System.out.println(s);
}
编译器可以自己判断参数类型
aBlockOfCode = (s) {
System.out.println(s);
}
只有一行代码,所有可以不要大括号
在参数和方法之间加一个箭头符号->
aBlockOfCode = (s) –>System.out.println(s);
简练
www.javakc.com 汇才同飞教育
第 4 页
在 Java 8 里面,所有的 Lambda 的类型都是一个接口,而 Lambda 表
达式本身,也就是”那段代码”,需要是这个接口的实现。这是我认为理解
Lambda 的一个关键所在,简而言之就是,Lambda 表达式本身就是一个接
口的实现。直接这样说可能还是有点让人困扰,我们继续看看例子。我们给
上面的 aBlockOfCode 加上一个类型:
这种只包含一个方法的接口类型,我们叫它“函数式接口”。为了避免后来的
人在这个接口中增加接口方法导致其有多个方法需要被实现,变成"非函数
接口”,我们可以在这个上面加上一个声明@FunctionalInterface, 这样
别人就无法在里面添加新的接口函数了:
aBlockOfCode = (s) –>System.out.println(s);
interface MyLambdaInterface{
void doSomething(String s);
}
www.javakc.com 汇才同飞教育
第 5 页
这样,我们就得到了一个完整的 Lambda 表达式声明:
1.2 Lambda 表达式有何用处?
最直观的作用就是使得代码变得异常简洁。
1.2.1 第一个例子
我们可以对比一下 Lambda 表达式和传统的 Java 对同一个接口的实现:
@FunctionalInterface
interface MyLambdaInterface{
void doSomething(String s);
}
MyLambdaInterface aBlockOfCode = (s) –>System.out.println(s);
剩余72页未读,继续阅读
资源评论
IT开发
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于知识图谱的推荐算法-MKR的实现python源码+运行说明.zip
- 基于matlab实现的电动汽车动力性经济性UI,希望对初学者有用 .rar
- 基于matlab实现的负荷平衡的配电网重构程序 matlab下调试通过.rar
- 基于matlab实现的利用矩阵的运算来编写旋转,使用矩阵进行坐标运算,使用矩阵进行坐标旋转.rar
- 基于matlab实现的利用前推回代法计算配电网潮流,可以算得电压,功率以及电流.rar
- 基于matlab实现的配电网潮流计算,PQ分解法,IEEE30节点验证 .rar
- 博客系统(struts+hibernate+spring)
- 基于matlab实现的汽车动力性,燃油经济性计算,基于MATLAB计算的,汽车理论相关内容 .rar
- 基于matlab实现的汽车动力性和经济性双目标函数的优化设计.rar
- 使用 Redis +Python+Flask+MySQL开发简单接口实例.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功