从Java8中的方法返回Lambda?
我刚刚开始使用Java8,我想知道是否有一种方法可以编写一个返回Function
的方法
现在我有如下方法:
Function<Integer, String> getMyFunction() {
return new Function<Integer, String>() {
@Override public String apply(Integer integer) {
return "Hello, world!"
}
}
}
有没有一种方法可以用Java8更简洁地编写?我本希望这能奏效,但事实并非如此:
Function<Integer, String> getMyFunction() {
return (it) -> { return "Hello, world: " + it }
}
# 1 楼答案
您缺少分号:
尽管如前所述,它可以缩短为:
# 2 楼答案
去掉函数定义中的return语句:
# 3 楼答案
我想指出,在这种情况下,使用内置的^{} 可能更合适:
IntFunction
是standard API for functional interfaces的一部分,它定义了一系列好的接口,主要与Java原语相关# 4 楼答案
你可以这样写:
# 5 楼答案
因此,@assylias给出了99%案例的答案
然而,我认为,如果您想将lambda分配给一个变量(稍后使用),那么添加这一点是值得的。 您可以通过键入以下内容来执行此操作:
然后你就可以很容易地使用它,这是一个例子:
如果
Wrapp.withTransaction()
方法接受相同类型的可调用参数,事情甚至可以变得更简单。 (我把这个用于JPA atm)