2013-02-26 5 views
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()». Что называется типом инициализации конструктора.Java - блок в методе конструктора call

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

ответ

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 
};        // 
0

Это анонимный класс.

Это просто новый класс, наследующий от UntypedActorFactory с объявленным методом.

Смежные вопросы