我正在使用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 –