在Scala中,我看到你可以这样写:
class MyActor extends Actor with ActorLogging with Stash
在Java API中,我看到了以下要扩展的类
AbstractActor
AbstractLoggingActor
AbstractActorWithStash
有没有办法在上面创建Scala等效的Java?谢谢!
答案 0 :(得分:2)
class MyActor extends Actor with ActorLogging with Stash
Actor
,ActorLogging
和Stash
这里是特征。在Scala中,类可以扩展特征并混合其他特征。
AbstractActor
AbstractLoggingActor
AbstractActorWithStash
Akka的Java API中的上述类是抽象类。在Java中,类不能扩展多个抽象类。因此,无法在Java中定义MyActor
类的句法等价物。
但是,可以在Java中轻松定义MyActor
的有效等价物。 AbstractLoggingActor
是在演员中获得LoggingAdapter
的便捷方式;使用AbstractLoggingActor
的替代方法只是手动创建LoggingAdapter
。下面定义了一个使用Java API进行日志记录和存储的actor:
import akka.actor.*;
import akka.event.Logging;
import akka.event.LoggingAdapter;
class MyActorInJava extends AbstractActorWithStash {
LoggingAdapter log = Logging.getLogger(getContext().getSystem(), this);
...
}