【java8新特性】兰姆达表达式

前言

java8新特性,速度快,代码少,便于并行,强大的streamAPI,最大化减少空指针异常,本篇博客主要总结一下兰姆达表达式.

核心

Why

Lambda是一个匿名函数,我们可以把Lambda表达式理解为一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁/更灵活的代码.作为一种更紧凑的代码风格,使java的语言表达能力得到了提升.

What

Lambda表达式包含三部分:
1、左边:指定了Lambda表达式需要的所有参数
2、一个箭头符号:->
3、右边指定了Lambda方法体,即Lambda表达式要执行的功能,可以是表达式和代码块。

Grammer

语法格式一:无参数,无返回值

Runnable r1 = () -> System.out.println("Hello");

语法格式二:有一个参数,并且无返回值

Consumer<String> fun = x)->System.out.println(“Hello”);

语法格式三:若只有一个参数,()可以省略不写

Consumer<String> fun = x->System.out.println(“Hello Lambda!”);

语法格式四:有两个以上的参数,有返回值, 并且lambda体中有多条语句

BinaryOperator<Long> bo = (x,y) -> {System.out.println("实现函数接口的方法!";
return x + y;)}

语法格式五:若lambda体中只有一条语句,return和{}都可以省略不写

BinaryOperator<Long> bo =(x,y) -> x + y;

语法格式六:lambda表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,即“类型推断”

(x , y) -> Integer.compare(x, y);

函数式接口

我们要注意的是:lambda表达式需要“函数式接口”的支持,那么什么是函数式接口呢?
函数式接口:接口只有一个抽象方法的接口,成为函数式接口可以使用注解@FunctionalInterface
四大函数式接口

函数式接口参数类型返回类型用途
Consumer < T>消费型接口Tvoid对类型为T的对象应用操作,包含方法:void accept (T t)
Supplier < T>供给型接口T返回类型为T的对象,包含方法:T get();
Function < T,R>函数型接口TR对类型为T的对象应用操作,并返回结果.结果是R类型的对象.包含方法:R apply(T t)
Predicate < T>断定型接口Tboolean确定类型为T的对象是否满足某约束,并返回Boolean值.包含方法boolean test(T t)

方法引入与构造器引用

方法引用

当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!
( 实现抽象方法的参数列表,必须与方法引用方法的参数列表保持一致! )
方法引用:使用操作符 “ ::” 将方法名和对象或类的名字分隔开来。
如下三种主要使用情况:
 对象::实例方法
 类::静态方法
 类::实例方法
例如:
Compare((x,y) - > x.equals(y),”abc”,”abc”);
等同于:
Compare(String::equals,”abc”,”abc”);
注意: 当需要引用方法的第一个参数是调用对象,并且第二个参数是需要引
用方法的第二个参数(或无参数)时: ClassName::methodName

构造器引用

格式: ClassName::new
与函数式接口相结合,自动与函数式接口中方法兼容。
可以把构造器引用赋值给定义的方法,与构造器参数
列表要与接口中抽象方法的参数列表一致!
例如:
Function

数组引用

格式: type[] :: new
例如:
Function

总结

本篇博客就总结到这里了,下一篇咱们继续总结StreamAPI,感谢读者的阅读.

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值