gpt4 book ai didi

java - 将 Scala future 转换为 Java future

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:53 25 4
gpt4 key购买 nike

我有一个包含方法的生成的 java 接口(interface):

public Future<?> getCustomersAsync(AsyncHandler<Customer> asyncHandler);

我想用 Akka 实现它。我写了以下内容:

override def getCustomerAsync(asyncHandler: AsyncHandler[Customer]): Future[_] = {
myActorRef.ask(GetCustomer, system.actorOf(Props[Responder]))
}

问题是 ask 返回 scala.concurrent.Future[Any] 并且该方法必须返回 java.util.concurrent.Future[?]:

Error:(33, 17) type mismatch;
found : scala.concurrent.Future[Any]
required: java.util.concurrent.Future[?]
myActorRef.ask(GetCustomer, system.actorOf(Props[Responder]))
^

我怎样才能进行这种转换?

最佳答案

启动 Scala 2.13,标准库包括 scala.jdk.FutureConverters它提供 Scala 到 Java Future 的转换(反之亦然):

import scala.jdk.FutureConverters._

// val scalaFuture: scala.concurrent.Future[Int] = Future.successful(42)
scalaFuture.asJava
// java.util.concurrent.CompletionStage[Int] = <function1>

Java 用户请注意,您宁愿以显式方式使用 FutureConverters:

import scala.jdk.javaapi.FutureConverters;

// val scalaFuture: scala.concurrent.Future[Int] = Future.successful(42)
FutureConverters.asJava(scalaFuture);
// java.util.concurrent.CompletionStage[Int] = <function1>

关于java - 将 Scala future 转换为 Java future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28277843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com