将Scala Future转换为Java Future

米隆

我有一个包含方法的生成的Java接口:

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]))
                  ^

我该如何转换?

贾廷

那么将它们转换是不切实际的,因为scalaFuture不提供中断功能或任何其他取消机制。因此,没有直接的完全证明方法可以通过中断或通过Future中的方法调用来取消未来。

因此,最简单的解决方案是:如果不需要取消,将是:

  def convert[T](x:Future[T]):java.util.concurrent.Future[T]={
    new concurrent.Future[T] {
      override def isCancelled: Boolean = throw new UnsupportedOperationException

      override def get(): T = Await.result(x, Duration.Inf)

      override def get(timeout: Long, unit: TimeUnit): T = Await.result(x, Duration.create(timeout, unit))

      override def cancel(mayInterruptIfRunning: Boolean): Boolean = throw new UnsupportedOperationException

      override def isDone: Boolean = x.isCompleted
    }
  }

但是如果您仍然需要cancel,则将显示一个残障修复程序

在这里但是我不推荐它

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Java Future转换为Scala Future

来自分类Dev

将 Java CompletableFuture 转换为 Scala Future

来自分类Dev

将Scala Future转换为Twitter Future

来自分类Dev

将 IgniteFuture 转换为 Scala Future

来自分类Dev

将Future [T]转换为永远成功的Future [Option [T]]

来自分类Dev

将`Future [Option [X]]`转换为`Option [Future [X]]`

来自分类Dev

将Future [MyType]转换为Future [Option [MyType]]

来自分类Dev

将Future [T]转换为Future [Try [T]]

来自分类Dev

Scala:将Future [Option [List [User]]]转换为Future [Map [Long,User]]

来自分类Dev

Scala将Map [Int,Future [Seq [T]]]转换为Future [Map [Int,Seq [T]]]

来自分类Dev

如何将Future转换为Stream?

来自分类Dev

在Scala中将Future [Future [(String,String)]]转换为Future [(String,String)]用于理解

来自分类Dev

使用(B => Future [C])函数将Future [Either [A,B]]转换为Future [Either [A,C]]

来自分类Dev

如何将Future [Option [(Person,Future [Vector [Order]]]]]]转换为Future [Option [(Person,Vector [Order]]]]]

来自分类Dev

使用(B => Future [C])函数将Future [Either [A,B]]转换为Future [Either [A,C]]

来自分类Dev

我们如何将Java中的反应式JDBC调用转换为Scala中的Future?

来自分类Dev

在Scala中将Future [Unit]转换为Try [Unit]

来自分类Dev

在Scala中将Future [List [Error \ / Double]]转换为Future [[List [Error] \ / List [Double]]

来自分类Dev

如何将Java Future <V>转换为番石榴ListenableFuture <V>

来自分类Dev

将 Java CompletableFuture 转换为 TwitterFuture(没有任何中间 Future)

来自分类Dev

如何将std :: future <T>转换为std :: future <void>?

来自分类Dev

如何在不调用Future.get的情况下将Future转换为Stream?

来自分类Dev

将Future [List [String]]转换为List [String]

来自分类Dev

Flutter:如何将Future <String>转换为String?

来自分类Dev

将URLSession.DataTaskPublisher转换为Future发布者

来自分类Dev

使用合并运算符将Future转换为Publisher

来自分类Dev

将Future <void>转换为RxJava Observable或Flowable

来自分类Dev

将Source [ByteString,Future [IOResult]]转换为列表[String]

来自分类Dev

Scala 将 Future[IOResult] 映射到 Future[Unit]

Related 相关文章

  1. 1

    将Java Future转换为Scala Future

  2. 2

    将 Java CompletableFuture 转换为 Scala Future

  3. 3

    将Scala Future转换为Twitter Future

  4. 4

    将 IgniteFuture 转换为 Scala Future

  5. 5

    将Future [T]转换为永远成功的Future [Option [T]]

  6. 6

    将`Future [Option [X]]`转换为`Option [Future [X]]`

  7. 7

    将Future [MyType]转换为Future [Option [MyType]]

  8. 8

    将Future [T]转换为Future [Try [T]]

  9. 9

    Scala:将Future [Option [List [User]]]转换为Future [Map [Long,User]]

  10. 10

    Scala将Map [Int,Future [Seq [T]]]转换为Future [Map [Int,Seq [T]]]

  11. 11

    如何将Future转换为Stream?

  12. 12

    在Scala中将Future [Future [(String,String)]]转换为Future [(String,String)]用于理解

  13. 13

    使用(B => Future [C])函数将Future [Either [A,B]]转换为Future [Either [A,C]]

  14. 14

    如何将Future [Option [(Person,Future [Vector [Order]]]]]]转换为Future [Option [(Person,Vector [Order]]]]]

  15. 15

    使用(B => Future [C])函数将Future [Either [A,B]]转换为Future [Either [A,C]]

  16. 16

    我们如何将Java中的反应式JDBC调用转换为Scala中的Future?

  17. 17

    在Scala中将Future [Unit]转换为Try [Unit]

  18. 18

    在Scala中将Future [List [Error \ / Double]]转换为Future [[List [Error] \ / List [Double]]

  19. 19

    如何将Java Future <V>转换为番石榴ListenableFuture <V>

  20. 20

    将 Java CompletableFuture 转换为 TwitterFuture(没有任何中间 Future)

  21. 21

    如何将std :: future <T>转换为std :: future <void>?

  22. 22

    如何在不调用Future.get的情况下将Future转换为Stream?

  23. 23

    将Future [List [String]]转换为List [String]

  24. 24

    Flutter:如何将Future <String>转换为String?

  25. 25

    将URLSession.DataTaskPublisher转换为Future发布者

  26. 26

    使用合并运算符将Future转换为Publisher

  27. 27

    将Future <void>转换为RxJava Observable或Flowable

  28. 28

    将Source [ByteString,Future [IOResult]]转换为列表[String]

  29. 29

    Scala 将 Future[IOResult] 映射到 Future[Unit]

热门标签

归档