码迷,mamicode.com
首页 > 其他好文 > 详细

lambda表达式

时间:2020-01-18 19:23:19      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:OLE   code   示例   stream   cat   类型   使用   https   obj   

一、概念

1. 可以给Java变量赋"值",例如int i=1;

2. 也可以把一个代码块(例如一个方法)赋给Java变量

3. 这个代码块,即被赋值给一个变量的函数,就是一个lambda表达式

4. 此时Java变量的类型是一个接口,而lambda表达式是这个接口的实现,即lambda表达式返回值是接口类型的

 

二、函数式接口

1. 概念:一个接口里只有一个方法需要被实现,如果有多个方法需要被实现,就变成了非函数接口

2. 在接口上加上@FunctionalInterface,就可以保持函数式接口,无法在接口里添加其他需要被实现的方法

 

三、示例

InterfaceA a=(s)->System.out.println(s);
函数式接口 变量 lambda表达式

 

四、使用

1. 传统的Java对接口的实现,需要写一个类实现接口,并重写接口里的方法

2. lambda表达式一行代码就实现了

3. 函数式接口

a. Predicate<T> 做检查,返回boolean值

b. Consumer<T>执行有参数的方法,无返回值

c. Stream的filter代替Predicate<T>

d. Stream直接代替Consumer<T>

e. 可以用方法引用(Method Reference)代替lambda表达式,Object::methodName, Class::staticMethod

f. 使用Optional<T>处理null,需要结合lambda表达式才能把null检查变得简单

 

 

 

 

参考:

https://mp.weixin.qq.com/s/Ww17lhNowmMO9cGWHKqXfA

 

lambda表达式

标签:OLE   code   示例   stream   cat   类型   使用   https   obj   

原文地址:https://www.cnblogs.com/june0816/p/6803805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!