聊聊lambda

2022-09-27 08:56:28 浏览数 (1)

公众号链接:https://mp.weixin.qq.com/s/MFXRBr16LuGn6G2rlOFFEw

简介

今天主要聊聊java中的lambda

距离我加入hutool-commiter已经有一段时间了,想起曾经封装过的一个类Opt,就是使用lambda,按照惯例,先介绍下dromara组织下的项目hutool

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

这个类Opt的灵感来源是对jdk内置的java.util.Optional的拓展,在一些细节方面进了了简化处理

下面主要是通过其介绍lambda的使用

快速上手

依靠idea编译器的提示进行快速上手

下方是判断user是否为空,不为空通过User#getSchool()获取学校名的操作

例如此处我写到这里

代码语言:javascript复制
User user = new User();
// idea提示下方参数,如果没显示,光标放到括号里按ctrl p主动呼出            
         |Function<? super User,?> mapper|
Opt.ofNullable(user).map()

这里idea为我们提示了参数类型,可这个Function我也不知道它是个什么

实际上,我们new一个就好了

代码语言:javascript复制
Opt.ofNullable(user).map(new Fun)
                            |Function<User, Object>{...} (java.util.function)   |  <-戳我
                            |Func<P,R> cn.hutool.core.lang.func                 |

这里idea提示了剩下的代码,我们选Function就行了,接下来如下:

代码语言:javascript复制
Opt.ofNullable(user).map(new Function<User, Object>() {
})

我们这里根据具体操作选取返回值

例如这里是想判断user是否为空,不为空时调用getSchool,从而获取其中的返回值String类型的school

我们就如下写法,将第二个泛型,也就是象征返回值的泛型改为String

代码语言:javascript复制
Opt.ofNullable(user).map(new Function<User, String>() {
})

然后这里红线提示了,我们就使用idea的修复所有,默认快捷键alt 回车

代码语言:javascript复制
Opt.ofNullable(user).map(new Function<User, String>() {
})                                                | 


	

0 人点赞