繁体   English   中英

Java 8:用于将Java.util.function.Function实现为Lambda表达式的语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM