lambda小技巧

简介: lambda小技巧

人类最不道德订户,是不诚实与懦弱。——高尔基

经常有朋友问我,老是遇到参数为一些lambda的函数,我怎么知道对应的lambda怎么写呢?

这函数式编程,真是一件美事啊~

对于这种情况,我们依靠我们强大的idea即可

例如此处我写到这里写不会了

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>() {
})                                                | 💡 Implement methods                  |  <-选我
                                                  | ✍  Introduce local variable          |
                                                  | ↩  Rollback changes in current line   |

选择第一个Implement methods即可,这时候弹出一个框,提示让你选择你想要实现的方法

这里就选择我们的apply方法吧,按下一个回车就可以了,或者点击选中apply,再按一下OK按钮

||IJ| Select Methods to Implement                        X |
|                                                          |
| 👇  ©  |  ↹  ↸                                          |
| -------------------------------------------------------- |
| | java.util.function.Function                            |
| | ⒨ 🔓 apply(t:T):R                                     |      <-选我选我
| | ⒨ 🔓 compose(before:Function<? super V,? extents T):Fu|
| | ⒨ 🔓 andThen(after:Function<? super R,? extends V>):Fu|
| |                                                        |
| | ========================================               |                                        
| -------------------------------------------------------- |
|  ☐ Copy JavaDoc                                          |
|  ☑ Insert @Override               |  OK  |  | CANCEL |   |     <-选完点我点我

此时此刻,代码变成了这样子

Opt.ofNullable(user).map(new Function<User, String>() {
    @Override
    public String apply(User user) {
        return null;
    }
})

这里重写的方法里面就写你自己的逻辑(别忘了补全后面的分号)

Opt.ofNullable(user).map(new Function<User, String>() {
    @Override
    public String apply(User user) {
        return user.getSchool();
    }
});

我们可以看到,上边的new Function()变成了灰色

我们在它上面按一下alt+enter(回车)

Opt.ofNullable(user).map(new Function<User, String>() {
    @Override                              | 💡 Replace with lambda             > |  <-选我啦
    public String apply(User user) {       | 💡 Replace with method reference   > |
        return user.getSchool();           | 💎 balabala...                     > |
    }
});

选择第一个Replace with lambda,就会自动缩写为lambda

Opt.ofNullable(user).map(user1 -> user1.getSchool());

如果选择第二个,则会缩写为我们双冒号格式

Opt.ofNullable(user).map(User::getSchool);

看,是不是很简单!

相关文章
|
6月前
lambda中orElse(null)使用
lambda中orElse(null)使用
150 0
|
11月前
|
Python
lambda
lambda 是一个匿名函数,它通常用于简化代码,使代码更简洁、易读。lambda 函数不需要显式地使用 def 关键字进行定义,可以直接在表达式中使用。它的语法如下:
170 6
|
11月前
|
SQL Java 程序员
聊聊lambda
聊聊lambda
44 1
|
6月前
|
C#
C# Lambda
C# Lambda
41 0
|
11月前
获取lambda
获取lambda
49 0
|
算法 编译器
【lambda函数】lambda()函数
【lambda函数】lambda()函数
|
设计模式 Java API
值得使用Lambda的8个场景,别再排斥它了!
前言 可能对不少人来说,Lambda显得陌生又复杂,觉得Lambda会导致代码可读性下降,诟病Lambda语法,甚至排斥。
|
算法 编译器 容器
lambda
lambda
100 0
|
Java 开发者
lambda让代码更优雅
Lambda表达式是Java 8中引入的一个重要特性,它允许开发者以更简洁的方式编写匿名函数,使得代码更加紧凑和易读。Lambda表达式是函数式编程的一种体现,可以将函数作为方法的参数传递,并且可以使用更简洁的语法实现函数式接口(只有一个抽象方法的接口)的实例化。Lambda表达式的语法形式为 (参数列表) -> {表达式或语句块}。
80 0
|
Serverless Go 云计算
Lambda
Lambda自制脑图
229 0
 Lambda