gpt4 book ai didi

Java 8 lambdas 执行

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:21 25 4
gpt4 key购买 nike

我怎样才能在 Java 8 中做这样的事情?

boolean x = ((boolean p)->{return p;}).apply(true);

现在我收到以下错误:

The target type of this expression must be a functional interface

最佳答案

根据 JLS section 15.27 :

It is a compile-time error if a lambda expression occurs in a program in someplace other than an assignment context (§5.2), an invocation context (§5.3), or a casting context (§5.5).

也可以在 return statement 中使用 lambda 表达式.

然后我们可以用四种不同的方式重写您的示例:

  • 通过创建赋值上下文:

    Function<Boolean, Boolean> function = p -> p;
    boolean x = function.apply(true);
  • 通过创建调用上下文:

    foobar(p -> p);

    private static void foobar(Function<Boolean, Boolean> function) {
    boolean x = function.apply(true);
    }
  • 通过创建转换上下文:

    boolean x = ((Function<Boolean, Boolean>) p -> p).apply(true);
  • 使用 return 语句:

    boolean x = function().apply(true);

    private static Function<Boolean, Boolean> function() {
    return p -> p;
    }

此外,在这个简单的示例中,整个 lambda 表达式可以重写为:

UnaryOperator<Boolean> function = UnaryOperator.identity();

关于Java 8 lambdas 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com