博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之Lambda表达式
阅读量:5214 次
发布时间:2019-06-14

本文共 1523 字,大约阅读时间需要 5 分钟。

一、Lambda表达式入门

我们先来看一段代码:匿名内部类的方式实现参数的传递

interface Command{	public abstract void test();}public class CommandTest {		public void show(Command c) {		c.test();	}		public static void main(String[] args) {		CommandTest ct=new CommandTest();		//这里的show方法需要一个Command对象,我们并没有new一个对象来传参,而是使用了匿名内部类的方式来进行参数传递		ct.show(new Command() {						@Override			public void test() {				System.out.println("匿名内部类测试");							}		});	}}

  

 

interface Command{	public abstract void test();}public class CommandTest {		public void show(Command c) {		c.test();	}		public static void main(String[] args) {		CommandTest ct=new CommandTest();				ct.show(()->{System.out.println("Lambda表达式入门测试");});//Lambda表达式实现参数传递
} }

  

上面的一段代码和之前的除了参数传递方式不同,其他都一样,第一段代码用匿名内部类的方式实现参数传递,第二段代码用Lambda表达式实现参数传递。

我们会发现使用Lambda表达式实现参数传递会简洁很多,少写了很多代码,却可以实现同样的功能。

 

二、Lambda表达式详细介绍:

Lambda表达书由三部分组成:

1、形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。

2、箭头(->),必须由英文中画线和大于号组成

3、代码块。如果代码块只包含一条语句, Lambda表达式允许省略代码块的花括号,那么这条语句就不要用花括号表示语句结束。 Lambda代码块只有一条 retur语句,甚至可以省略 return关键字。 Lambda表达式需要返回值,而它的代码块中仅有一条省略了 return的语句, Lambda表达会自动返回这条语句的值。

 

Lambda表达式与函数式接口:

Lambda表达式的类型,也称为“目标类型”,Lambda表达式的类型必须是函数式接口,函数式接口就是只能拥有一个抽象方法的接口。函数式接口可以包含多个默认方法和类方法,但只能有一个抽象方法。

 

Lambda表达式与匿名内部类的区别:

相同:

  1、Lambda表达式与匿名内部类一样,都可以直接访问“ effectively final”的局部变量,以及外部类的成员变量(包括实例变量和类变量)。

  2、Lambda表达式创建的对象与匿名内部类生成的对象一样,都可以直接调r用从接口中继承的默认方法

不同:

  1、匿名内部类可以为任意接口创建实例,但Lambda表达式只能为函数式接口创建实例

  2、匿名内部类实现的抽象方法的方法体允许调用接口中定义的默认方法:但 Lambda表达式的代码块不允许调用接口中定义的默认方法

 

转载于:https://www.cnblogs.com/wgblog-code/p/11429106.html

你可能感兴趣的文章
Selenium2+python自动化7-xpath定位
查看>>
算法导论笔记:02基本排序查找算法
查看>>
Redis源码解析:08对象
查看>>
AIDL--------应用之间的通信接口
查看>>
java的JVM机制
查看>>
[Python笔记]第六篇:文件处理
查看>>
阶段一:读几本经济学书
查看>>
C结构体struct 和 共用体union的使用测试
查看>>
Jquery 的ajax里边不能识别$(this)
查看>>
linux下安装python
查看>>
自 嘲
查看>>
篇一:MySQL中case when then
查看>>
全球前50大名站
查看>>
使用gradle建立java application
查看>>
.Net 转战 Android 4.4 日常笔记(5)--新软件Android Studio 0.5.8安装与配置及问题解决...
查看>>
16 两点注意事项
查看>>
Linux服务器配置tomcat步骤
查看>>
单元测试
查看>>
百度地图获取当前位置
查看>>
django 多数据库配置
查看>>