Ich benutze Akka von Java. Gemäß der Dokumentation verwendet context.become()
Procedure<Object>
als Parameter. Tatsächlich erwartet es PartialFunction<Object, BoxedUnit>
was scheinbar automatisch mit vielen Methoden mit seltsamen Namen generiert wird.
Was ist der richtige Weg, wird () aus Java zu verwenden?
PS Ich benutze Akka 2.0.3
Aktualisierung:
Es sieht so aus, als gäbe es zwei Methoden: context () und getContext (). Der erste gibt ActorContext zurück und der zweite gibt UntypedActorContext zurück. UntypedActorContext hat become(Procedure<Object>)
.
Sie verwechseln Akka Java und Scala API. Technisch können Sie Scala-Bibliotheken wie Akka aus Java-Code verwenden, aber oft ist es ausführlich und umständlich. Das Akka-Team entschied sich daher für die Entwicklung separater APIs - nativ in Scala und Java-Adaptern.
In der Scala-API erweitern Sie akka.actor.Actor
mit a context
-Feld vom Typ akka.actor.ActorContext
. Diese ActorContext.become()
akzeptiert PartialFunction
, was eine Scala-spezifische Klasse ist .
Andererseits erweitern Sie in Java API akka.actor.UntypedActor
mit (Java-ähnlicher) Methode getContext()
, Rückgabe akka.actor.UntypedActorContext
. Dieser akzeptiert akka.japi.Procedure
.
Um es kurz zu machen: Wenn Sie Java API verwenden, bleiben Sie dabei. Es gibt eine klare Unterscheidung zwischen Scala und Java-Dokumentation.
Es gibt viele gute Beispiele dafür, wie man das auch in Java macht. Dieses Beispiel hilft hoffentlich:
%Vor%} }