Ich habe einen Schauspieler definiert als:
%Vor%enthält eine Methode, mit der der Aktor vor dem Start eingerichtet wird:
%Vor%Ich instanziere diesen Akteur so:
%Vor%was mir einen ActorRef zurückgibt. Der Compiler lässt mich nicht "addRef" auf einem ActorRef aufrufen, da es ein Mitglied des Subtyps ist. Also wirke ich den Knoten mit:
%Vor%Was den Compiler glücklich macht. Zur Laufzeit bekomme ich dann
%Vor%das scheint für mich keinen Sinn zu ergeben, da es ein Untertyp ist und ich in der Lage sein sollte, darauf zu antworten.
Ideen?
Sie sollten die Methoden eines Akteurs nicht direkt von einer anderen Klasse aufrufen. Es bricht das gesamte Design des Systems, das ist
ActorRef
kommuniziert wird, das mit dem Aufruf von actorOf
oder actorFor
erhalten wurde
!
, ?
) verwendet werden Wenn Sie eine Referenz in ActorA
auf eine andere ActorB
erstellen möchten, können Sie:
ActorB
im Initialisierungscode ActorA
, wie in Ссылка
ActorB
-Verweis an die ActorA
als spezifische Nachricht. Dann kann ActorA
den Verweis innerhalb von receive
implementation Wenn Sie eine Methode aufrufen müssen, um eine Schnittstelle / Merkmalsbedingung zu erfüllen, sehen Sie sich Getippte Akteure
Wenn Sie dies zum Testen tun möchten, dann können Sie beim Erstellen eines Actors einfach folgendes tun:
%Vor%Dann können Sie Methoden auf dem Actor ausführen
Sie können alles auf irgendwas umwandeln, und der Compiler wird das gerne tun, aber die Überprüfung zur Laufzeit wird fehlschlagen, wenn es nicht möglich ist. Die ActorRef
ist keine Instanz Ihrer Actor
-Klasse oder ein Subtyp davon.
Wenn Sie dies tun:
%Vor% Sie erhalten eine ActorRef
zurück, an die Sie nur Nachrichten senden sollten. Abgesehen davon wird der Aktor sofort gestartet, wenn Sie system.actorOf
aufrufen. Daher ist es nicht möglich, eine Methode für die Instanz Actor
vor dem Start aufzurufen.
Hier ist eine Beschreibung der Schauspieler aus den Akka Docs , die die Referenzen der Schauspieler erläutern .