2017-09-29 3 views

Répondre

1
class MyActor extends Actor with ActorLogging with Stash 

Actor, ActorLogging et Stash ici sont des traits. En Scala, une classe peut étendre un trait et mélanger des traits supplémentaires.

AbstractActor 
AbstractLoggingActor 
AbstractActorWithStash 

Les classes ci-dessus dans l'API Java d'Akka sont des classes abstraites. En Java, une classe ne peut pas étendre plus d'une classe abstraite. Par conséquent, on ne peut pas définir en Java l'équivalent syntaxique de la classe MyActor.

Cependant, on peut facilement définir l'équivalent effectif de MyActor en Java. AbstractLoggingActor est un moyen pratique d'obtenir un LoggingAdapter chez un acteur; l'alternative à l'utilisation AbstractLoggingActor est simplement de créer manuellement un LoggingAdapter. Ce qui suit définit un acteur qui a à la fois la journalisation et le stockage avec l'API Java:

import akka.actor.*; 
import akka.event.Logging; 
import akka.event.LoggingAdapter; 

class MyActorInJava extends AbstractActorWithStash { 
    LoggingAdapter log = Logging.getLogger(getContext().getSystem(), this); 
    ... 
}