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
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?
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:
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:
Ссылка :
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:
Aus diesem Grund konnte akka diesen Akteur nicht erstellen.