Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Scala未来中的Lambda表达式_Java_Scala_Java 8_Scala 2.12 - Fatal编程技术网

Java Scala未来中的Lambda表达式

Java Scala未来中的Lambda表达式,java,scala,java-8,scala-2.12,Java,Scala,Java 8,Scala 2.12,我使用的是Scala2.12.2和Java8。对于一个非常奇怪的情况,我需要在Java中使用Scala Futures,我发现在future操作符中使用Lambdas是行不通的 @Test public void test(){ Future<String> future = new Promise.DefaultPromise(); future.map(value -> value.toUpperCase()) .onComplete

我使用的是Scala2.12.2和Java8。对于一个非常奇怪的情况,我需要在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));
}
但是在阅读了scala 2.12版的文档之后

我知道从现在起,Java8中的lambda表达式与ScalaAPI兼容

我误解了什么吗?

这里很好用

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());
scala.concurrent.Future f=scala.concurrent.Future.successful(“abc”);
scala.concurrent.Future f2=f.map(s->s.toUpperCase(),scala.concurrent.ExecutionContext.global());
foreach(s->{System.out.println(s);返回null;},scala.concurrent.ExecutionContext.global();

我从未尝试过使用Java中的Scala
Future
s。但我猜它不是一个要从Java使用的API。例如,几乎每种方法都需要隐式的
ExecutionContext
。Java没有隐式。Java有自己的
Future
s。我们有Scala+Java代码的保护,所以我们必须接受这样一个事实,Scala的未来将在Java环境中实现。嗨,Paul,DefaultPromise是一个实现细节,不供外部使用(在impl包中和被包保护中都可以看到)。你有没有想过用这个:嗯,我做错了什么?。我在Scala 2.12.2和JDK Java 8的项目中使用了IntelliJ和SDK。我还需要配置其他东西?我不知道。我的代码不适合你吗?顺便说一句,我只是用Java9和Scala2.12.3测试了它。你在用IntelliJ吗?
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());