Ich benutze Scala 2.12.2 und Java 8. Für eine wirklich bizarre Situation muss ich die Scala Futures in Java verwenden, und ich sehe, dass die Verwendung der Lambdas im zukünftigen Operator es nicht funktioniert .Lambda Ausdrücke in Scala Future
@Test
public void test(){
Future<String> future = new Promise.DefaultPromise();
future.map(value -> value.toUpperCase())
.onComplete(value -> System.out.println(value));
}
Die Fehlermeldung sagte:
Future cannot be applied to lambda expression
Aber nach der Dokumentation der scala Version 2.12 http://www.scala-lang.org/news/2.12.0/
ich, dass mit Scala API von jetzt an, Lambda-Ausdrücke aus Java8 gelesen und verstanden kompatibel waren .
Habe ich hier etwas missverstanden?
Ich habe nie versucht Scala 'Future's von Java zu verwenden. Aber ich denke, es ist keine API, die aus Java verwendet werden soll. Z.B. Fast jede Methode benötigt einen ** impliziten ** 'ExecutionContext'. Java hat keine Implikationen. Java hat eigene 'Future's. –
Nun, wir haben einen Schutz mit Scala + Java-Code, also müssen wir damit leben, dass Futures von Scala in Java-Umgebung sein wird. – paul
Hallo Paul, DefaultPromise ist ein Implementierungsdetail, das nicht für den externen Gebrauch gedacht ist (wie man sieht, da es sowohl im impl-Paket als auch paketgeschützt ist). Haben Sie darüber nachgedacht: https://github.com/scala/scala-java8-compat –