我正在使用Java的Akka.根据文件,context.become()需要Procedure<Object>作为一个参数.事实上,它预计PartialFunction<Object, BoxedUnit>这似乎是一些自动生成的东西,其中包含许多带有奇怪名称的方法.
从Java 使用java ()的正确方法是什么?
PS我正在使用Akka 2.0.3
更新:看起来有两种方法:context()和getContext().第一个返回ActorContext,第二个返回UntypedActorContext.UntypedActorContext有become(Procedure<Object>).
你混淆了Akka Java和Scala API.从技术上讲,你可以从Java代码中使用像Akka这样的Scala库,但通常它冗长而繁琐.因此,Akka团队决定开发单独的API - 原生于Scala和Java适配器.
在Scala API中,您扩展akka.actor.Actor了具有context类型字段的字段akka.actor.ActorContext.这ActorContext.become()接受PartialFunction,这是一个特定于Scala的类.
另一方面,在Java API中,您扩展了akka.actor.UntypedActor(类似Java)方法getContext(),返回akka.actor.UntypedActorContext.这个接受了akka.japi.Procedure.
简而言之 - 如果您使用的是Java API,请坚持下去.Scala和Java文档之间有明显的区别.