公众号链接: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
一个就好了
Opt.ofNullable(user).map(new Fun)
|Function<User, Object>{...} (java.util.function) | <-戳我
|Func<P,R> cn.hutool.core.lang.func |
这里idea
提示了剩下的代码,我们选Function
就行了,接下来如下:
Opt.ofNullable(user).map(new Function<User, Object>() {
})
我们这里根据具体操作选取返回值
例如这里是想判断user
是否为空,不为空时调用getSchool
,从而获取其中的返回值String
类型的school
我们就如下写法,将第二个泛型,也就是象征返回值的泛型改为String
:
Opt.ofNullable(user).map(new Function<User, String>() {
})
然后这里红线提示了,我们就使用idea
的修复所有,默认快捷键alt
回车
Opt.ofNullable(user).map(new Function<User, String>() {
}) |