lambda小技巧
人类最不道德订户,是不诚实与懦弱。——高尔基
经常有朋友问我,老是遇到参数为一些lambda的函数,我怎么知道对应的lambda怎么写呢?
这函数式编程,真是一件美事啊~
对于这种情况,我们依靠我们强大的idea即可
例如此处我写到这里写不会了
1 | User user = new User(); |
这里idea为我们提示了参数类型,可这个Function我也不知道它是个什么
实际上,我们new一个就好了
1 | Opt.ofNullable(user).map(new Fun) |
这里idea提示了剩下的代码,我们选Function就行了,接下来如下:
1 | Opt.ofNullable(user).map(new Function<User, Object>() { |
此处开始编译报错了,不要着急,我们这里根据具体操作选取返回值
例如我这里是想判断user是否为空,不为空时调用getSchool,从而获取其中的返回值String类型的school
我们就如下写法,将第二个泛型,也就是象征返回值的泛型改为String:
1 | Opt.ofNullable(user).map(new Function<User, String>() { |
然后我们使用idea的修复所有,默认快捷键alt+回车
1 | Opt.ofNullable(user).map(new Function<User, String>() { |
选择第一个Implement methods即可,这时候弹出一个框,提示让你选择你想要实现的方法
这里就选择我们的apply方法吧,按下一个回车就可以了,或者点击选中apply,再按一下OK按钮
1 | ||IJ| Select Methods to Implement X | |
此时此刻,代码变成了这样子
1 | Opt.ofNullable(user).map(new Function<User, String>() { |
这里重写的方法里面就写你自己的逻辑(别忘了补全后面的分号)
1 | Opt.ofNullable(user).map(new Function<User, String>() { |
我们可以看到,上边的new Function<User, String>()变成了灰色
我们在它上面按一下alt+enter(回车)
1 | Opt.ofNullable(user).map(new Function<User, String>() { |
选择第一个Replace with lambda,就会自动缩写为lambda啦
1 | Opt.ofNullable(user).map(user1 -> user1.getSchool()); |
如果选择第二个,则会缩写为我们双冒号格式
1 | Opt.ofNullable(user).map(User::getSchool); |
看,是不是很简单!
