JDK1.8 Lambada表达式、函数式接口、方法引用

Lambda表达式

1、Lambda表达式概念

lambda表达式可以替代只有一个抽象函数的接口实现,告别匿名内部类,代码看起来更简洁易懂
lambda表达式同时还提升了对集合、框架的迭代、遍历、过滤数据的操作
lambda可以极大的减少代码冗余,同时代码的可读性要好过冗长的内部类,匿名类

2、特点

	函数式编程
	参数类型自判断
	代码量少,简洁

3、lambda表达式的语法

	(参数名)->{代码块};单行可以不加{},多行必须加{}

​ LambdaParameters -> LambdaBody
​ args->expr或者(object … args)->{函数式接口抽象方法实现逻辑}
​ 1、()参数的个数,根据函数式接口里面抽象的参数个数来决定,当参数只有一个的时候,()可以省略
​ 2、当expr逻辑非常简单的时候,{}和return可以省略

4、表达式案例

​ ()->{}
​ ()->{System.out.println(1);}
​ ()->System.out.println(1)
​ ()->{return 100;}
​ ()->100
​ ()->null
​ (int x)->{return x+1;}
​ (int x)->x+1
​ (x)->x+1
​ x->x+1

5、应用场景

任何有函数式接口的地方

函数式接口

1、概念

函数式接口:只有一个抽象方法的接口(Object类中的方法除外),用@FunctionalInterface修饰

2、 jdk1.8提供的函数式接口

supplier 代表一个输出
consumer 代表一个输入
Biconsumer 代表两个输入
function 代表一个输入一个输出
Bifunction 代表两个输入一个输出
UnaryOperator 代表一个输入一个输出 ,输入与输出相同数据类型
BinaryPerator 代表两个输入一个输出, 输入与输出相同数据类型

方法的引用

方法引用是用来直接访问类或者实例已经存在的方法或者构造方法,方法引用提供了一种引用而不执行方法的方式,如果抽象方法的实现恰好可以使用调用另外一个方法来实现,就可能使用方法引用。

方法引用的分类

实现方式对应lambda表达式
静态方法引用类名:: 方法静态名称(参数名)->类名.方法名(参数);
实例方法引用实例对象:: 方法名称(参数名)->对象.方法名(参数名)
对象方法引用类名:: 方法名称(对象,参数名)->类名.方法名(参数名)
构造方法引用类名:: new(参数名)->new 类名(参数名)

使用

静态方法引用:如果函数式接口的实现恰好调用一个静态方法可以实现,就可以使用静态方法引用
实例方法引用:如果函数式接口的实现恰好可以调用一个实例的实例方法来实现,就可以使用实例方法引用
对象方法引用:抽象方法的第一个参数类型恰好是实例方法的类型,抽象方法剩余的参数恰好可以当作实例方法的参数,如果函数式接口的实现能够通过上面说的实例方法来实现的话,就可以使用对象方法引用
构造方法引用:如果函数式接口的实现可以通过使用一个类的构造函数来实现的话,就可以使用构造方法引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值