2

AkkaScalaアクターはakka.actor.Actorを拡張する必要があります

AkkaJavaアクターはakka.actor.UntypedActorを拡張する必要があります

したがって、デフォルト以外のコンストラクターを使用してScalaアクターを定義し、Javaコードから作成すると、次の問題が発生します。

ActorRef myActor = system.actorOf(new Props(new UntypedActorFactory() {
  public UntypedActor create() {
    return new MyActor("...");
  }
}), "myactor");

もちろん、UntypedActorFactoryはタイプUntypedActorのオブジェクトを作成することを期待していますが、私のアクターはタイプActorです。

回避策は何ですか?

編集:

akka.japi.Creatorを使用するためのViktorからの指示に従って、これは機能します。

Props props1 = new Props();
Props props2 = props1.withCreator(new akka.japi.Creator() {
        public Actor create() {
            return new MyActor("...");
        }
    });
ActorRef actorRef = Main.appClient().actorOf(props2, "myactor");
4

1 に答える 1

7

この場合、UntypedActorFactoryの代わりにakka.japi.Creatorを渡します。

また、少なくとも2.0.1以降では、UntypedActorは必要ありません。

trait UntypedActorFactory extends Creator[Actor] with Serializable

https://github.com/akka/akka/blob/v2.0.1/akka-actor/src/main/scala/akka/actor/UntypedActor.scala#L161

于 2012-06-07T09:00:50.017 に答える