Erstelle einen Schauspieler

8

Dies ist wahrscheinlich ein extrem einfacher Fehler, aber ich kann nicht richtig funktionieren. Ich benutze Akka 2.2.3, um eine aktorbasierte Anwendung in scala zu erstellen.

Die vereinfachte Einrichtung ist die folgende:

%Vor%

Und der Hauptdarsteller

%Vor%

Und der Refresher actor

%Vor%

Was Sie davon wegnehmen sollten ist, dass keiner meiner Schauspieler Konstruktoren parametrisiert hat.

Wenn ich jedoch versuche, meine Anwendung auszuführen, schlägt sie mit

fehl %Vor%

Was ist mein Fehler hier? Soll ich meine Darsteller nicht mit .actorOf(Props[Class], "actorname") erstellen?

    
mgttlinger 09.12.2013, 12:34
quelle

2 Antworten

11

Wenn Sie möchten, dass dies mit geschachtelten Klassen funktioniert, müssen Sie den verschachtelten Akteur instanziieren, indem Sie einen Verweis auf den umschließenden Akteur als Konstruktor arg übergeben. Der Fehler, den Sie sehen, besagt, dass es keinen no-args -Konstruktor gibt, das ist also ein Hinweis. Der Code, mit dem Dinge funktionieren, würde so aussehen:

%Vor%

Meine Vermutung ist, dass dies mit dem Versuch zu tun hat, eine nicht-statische innere Klasse (durch Reflexion) zu instantiieren, ohne einen Verweis auf seine äußere Klasse zu geben. Ich habe das durch Lesen dieses Beitrags festgestellt:

Ссылка :

    
cmbaxter 09.12.2013, 13:38
quelle
1

Refresher ist eine innere Klasse von Discoverer . Wenn Sie also eine Instanz von Refresher erstellen möchten, müssen Sie dies im Kontext einer Instanz von Discoverer tun.

Nehmen Sie dieses Beispiel:

%Vor%

Ich kann new A , aber new B gibt einen Fehler zurück. Ich muss tun:

%Vor%

Aus diesem Grund konnte akka diesen Akteur nicht erstellen.

    
vptheron 09.12.2013 13:39
quelle

Tags und Links