10

JavaのAkkaを使用しています。ドキュメントによると、パラメーターとしてcontext.become()受け取りProcedure<Object>ます。実際、PartialFunction<Object, BoxedUnit>奇妙な名前の多くのメソッドで自動生成されたもののように見えるものを期待しています。

Javaからbecome()を使用する正しい方法は何ですか?

PS私はAkka 2.0.3を使用しています

更新: context() と getContext() の 2 つのメソッドがあるようです。1 つ目は ActorContext を返し、2 つ目は UntypedActorContext を返します。UntypedActorContext にはbecome(Procedure<Object>).

4

3 に答える 3

8

Akka Java と Scala API を混同しています。技術的には、Java コードから Akka などの Scala ライブラリを使用できますが、多くの場合、冗長で面倒です。そこで Akka チームは、Scala と Java アダプターのネイティブな API を分離するために開発することにしました。

Scala API では、 type のフィールドakka.actor.Actorを持つ whichを拡張します。これは、Scala 固有のクラスである を受け入れます。contextakka.actor.ActorContextActorContext.become()PartialFunction

一方、Java API ではakka.actor.UntypedActor、(Java のような) メソッドを持って拡張しgetContext()、 を返しakka.actor.UntypedActorContextます。これは受け入れますakka.japi.Procedure

端的に言えば、Java API を使用している場合は、それに固執してください。Scala と Java のドキュメントには明確な違いがあります。

于 2013-02-04T16:39:36.117 に答える