[英]Java 8: Syntax for Implementing java.util.function.Function as a Lambda Expression
我在使用Java 8的lambda表达式语法时遇到问题,似乎无法在一行中动态创建一个。 以下代码有效,
Function<Integer, Integer> increment = (x) -> (x + 1);
doStuff(increment);
但以下几行不
doStuff((x) -> (x + 1));
doStuff(Function (x) -> (x + 1));
doStuff(new Function (x) -> (x + 1));
doStuff(Function<Integer, Integer> (x) -> (x + 1));
doStuff(new Function(Integer, Integer> (x) -> (x + 1));
doStuff(new Function<Integer, Integer>(x -> {x + 1;}));
而且我不确定我还能尝试什么。 我当然不想用
doStuff(new Function<Integer, Integer>() {
@Override
public Integer apply(Integer x){
return x + 1;
}
});
那还有什么呢? 我浏览了有关lambda表达式语法的一堆问题,但似乎没有任何效果。
只是
doStuff((x) -> (x + 1));
你有过
Function<Integer, Integer> increment = (x) -> (x + 1);
doStuff(increment);
因此,只需将其替换为=
的右侧(通常)。
(x) -> (x + 1)
如果doStuff
的单个参数不是Function<Integer, Integer>
,则需要目标功能接口类型
doStuff((Function<Integer,Integer>) (x) -> (x + 1));
您的方法使用的是原始Function
类型。 读
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.