4
// allows passing in arguments to the MyActor constructor
ActorRef myActor = system.actorOf(new Props(new UntypedActorFactory() 
  {                                  // 
    public UntypedActor create() {   //
      return new MyActor("...");     //   <- this part confuses me
    }                                //
  }                                  //
 ), "myactor");

私はJavaの初心者で、Akkaのドキュメントを読んでいます。上記のコードは紛らわしいと思います。特に以下のコードブロック。コードのブロックを「new UntypedActorFactory()」コンストラクター呼び出しに送信するにはどうすればよいですか。このタイプのコンストラクターの初期化は何と呼ばれますか。

{
public UntypedActor create() {
return new MyActor("...");
}
4

2 に答える 2

4

あなたを混乱させた部分は、匿名クラスを作成してからインスタンス化し、新しく作成したインスタンスを引数としてメソッドに渡します。あなたが参照しているコードのブロックは、から派生した匿名クラスの本体ですUntypedActorFactory

たとえば、インターフェースがある場合:

interface SomeInterface {
    void someMethod();
}

次のようなインターフェイスを実装する匿名クラスを作成できます (名前付きクラスの拡張には同様の構文が適しています)。

SomeInterface instance = new SomeInterface() {
    public void someMethod() {    //
        // implementation here    //  <- similar to the example, 
    }                             //     this is the body of anonymous class
};                                //
于 2013-02-26T15:03:23.317 に答える
0

これは匿名クラスです。

これは、宣言されたメソッドを使用して UntypedActorFactory から継承する単純な新しいクラスです。

于 2013-02-26T15:01:08.030 に答える