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 回答