从Java使用become()

aav*_*aav 10 java akka

我正在使用Java的Akka.根据文件,context.become()需要Procedure<Object>作为一个参数.事实上,它预计PartialFunction<Object, BoxedUnit>这似乎是一些自动生成的东西,其中包含许多带有奇怪名称的方法.

从Java 使用java ()的正确方法是什么?

PS我正在使用Akka 2.0.3

更新:看起来有两种方法:context()和getContext().第一个返回ActorContext,第二个返回UntypedActorContext.UntypedActorContext有become(Procedure<Object>).

Tom*_*icz 8

你混淆了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文档之间有明显的区别.