1

我正在使用 Scala 2.12.2 和 Java 8。对于一个非常奇怪的情况,我需要在 Java 中使用 Scala Futures,我发现在 future 运算符中使用 Lambdas 是行不通的。

@Test
public void test(){
    Future<String> future = new Promise.DefaultPromise();
    future.map(value -> value.toUpperCase())
            .onComplete(value -> System.out.println(value));
}

错误信息说:

Future cannot be applied to lambda expression

但是在阅读了 scala 2.12 版的文档http://www.scala-lang.org/news/2.12.0/

我了解到,从现在开始,Java8 的 lambda 表达式与 Scala API 兼容。

我在这里误解了什么吗?

4

1 回答 1

1

This here works fine

scala.concurrent.Future<String> f = scala.concurrent.Future.successful("abc");
scala.concurrent.Future<String> f2 = f.map(s -> s.toUpperCase(), scala.concurrent.ExecutionContext.global());
f2.foreach(s -> {System.out.println(s); return null;}, scala.concurrent.ExecutionContext.global());
于 2017-10-07T23:11:10.713 回答