将CompletableFuture(Java 8)转换为Future(Scala)

Seb*_*ian 17 scala java-8

我想将下面方法的返回类型更改为 Future[Unit]

def send(data: Array[Byte]): CompletableFuture[Void] = {
  val f:CompletableFuture[Void] = client.send(data)
  f
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Scala 2.12.1.有没有方便的方法从Java 8转换CompletableFuture为Scala Future

Vik*_*ang 31

是的,它被称为scala-java8-compat,这是你正在寻找的方法.

  • 你就叫吗?`scala.compat.java8.FutureConverters.toScala(completionStage)` (3认同)
  • 您能举一个使用方法的例子吗?我认为那会有所帮助 (2认同)

aka*_*ppi 5

尽管asker(在2017年)提到了2.12,但现在我们有了2.13并且转换变得更容易:

从 Scala 2.13 开始,标准库包括 scala.jdk.FutureConverters,它提供 Java 到 Scala CompletableFuture/Future 的隐式转换:

import scala.jdk.FutureConverters._

val scalaFuture = javaFuture.asScala
Run Code Online (Sandbox Code Playgroud)

将 Java Future 转换为 Scala Future