我正在使用来自 Java 的 Akka。根据文档, context.become()
需要 Procedure<Object>
作为参数。事实上,它期望 PartialFunction<Object, BoxedUnit>
这似乎是使用许多名称奇怪的方法自动生成的东西。
在 Java 中使用 become() 的正确方法是什么?
附言 我正在使用 Akka 2.0.3
更新:
看起来有两种方法:context() 和 getContext()。第一个返回 ActorContext,第二个返回 UntypedActorContext。 UntypedActorContext 有 become(Procedure<Object>)
.
最佳答案
您混淆了 Akka Java 和 Scala API。从技术上讲,您可以从 Java 代码中使用像 Akka 这样的 Scala 库,但它通常很冗长和麻烦。因此,Akka 团队决定开发独立的 API - Scala 和 Java 适配器中的原生 API。
在 Scala API 中,您扩展了 akka.actor.Actor
它有一个类型为 akka.actor.ActorContext
的 context
字段.此 ActorContext.become()
接受 PartialFunction
,这是一个特定于 Scala 的类。
另一方面,在 Java API 中,您扩展了 akka.actor.UntypedActor
具有(类 Java)方法 getContext()
,返回 akka.actor.UntypedActorContext
.这个接受 akka.japi.Procedure
.
长话短说 - 如果您使用的是 Java API,请坚持使用。 Scala 和 Java 文档之间有明显的区别。
关于java - 使用 Java 中的 become(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14686428/