저는 Scala 2.12.2와 Java 8을 사용하고 있습니다. 정말 기괴한 상황에서 Java에서 Scala Futures를 사용해야하고, 미래 연산자에서 Lambdas를 사용하면 작동하지 않습니다. .Scala Future의 람다 식
@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
그러나 이후
내가 지금부터, Java8에서 람다 표현식은 스칼라 API와 호환이라고 이해 2.12 http://www.scala-lang.org/news/2.12.0/스칼라 버전의 문서를 읽어 .
여기에 내가 잘못 이해 했습니까?
잘 작동합니다. 하지만 그것은 Java에서 사용하기위한 API가 아닌 것 같습니다. 예 : 거의 모든 메서드는 ** 암시 적 ** ExecutionContext를 필요로합니다. 자바는 함축되어 있지 않습니다. 자바는 자신의'미래'를 가지고있다. –
우리는 Scala + Java 코드로 보호합니다. 따라서 Scala의 Futures가 Java 환경에있을 것이라는 사실에 따라 살아야합니다. – paul
Hi Paul, DefaultPromise는 외부 사용을 목적으로하지 않는 구현 세부 사항입니다 (impl 패키지와 패키지로 보호되는 것으로 확인 됨). 이것을 사용 해본 적이 있습니까? https://github.com/scala/scala-java8-compat –