我正在使用Scala 2.12.2和Java 8.对于一个非常奇怪的情况,我需要在Java中使用Scala Futures,并且我看到在未来的操作符中使用Lambdas它不起作用。Scala中的Lambda表达式未来
@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
但后读的斯卡拉版本2.12 http://www.scala-lang.org/news/2.12.0/
我了解,从现在开始,从Java8 lambda表达式是Scala的API兼容的文档。
我误解了一些东西吗?
我从来没有尝试过使用Scala的'Future's从Java。但我想这不是一个API,意味着从Java中使用。例如。几乎每个方法都需要一个**隐式** ExecutionContext。 Java没有含义。 Java拥有自己的“未来”。 –
那么我们有一个Scala + Java代码的保护,所以我们必须接受Scala的Futures将在Java环境中的事实。 – paul
嗨保罗,DefaultPromise是一个实现细节,不打算用于外部使用(正如在impl包和被封装保护中见证的那样)。你有没有考虑过使用这个:https://github.com/scala/scala-java8-compat –