Akkka库中的AbstractOractor和Untypedactor类之间的区别是什么?这两个类都用于创建演员。但是是什么将它们分开?!
它们是在Java中创建演员的单独的API,UntypedActor
已弃用,并已被AbstractActor
取代,在Java 8上发起了java 8的lambda Expressions,接收函数对实施比以旧的方式实施。
旧的( debecated ,自2.5.0(方法:
// this is DEPRECATED -----------vvvvvvvvvvvv
class My_OLD_STYLE_Actor extends UntypedActor {
@Override
public void onReceive(Object msg) {
if (msg instanceof RequestMonies) {
RequestMonies req = (RequestMonies) msg;
// ...
} else if (msg instanceof CheckStatus) {
CheckStatus check = (CheckStatus) msg;
// ...
} else unhandled();
}
}
,这是使用适当的电流API的同一片段: AbstractActor
是当前API(自2.5.0(:
public class JavaStyleActor extends AbstractActor {
@Override
public Receive createReceive() {
return receiveBuilder()
.match(RequestMonies.class, req -> {
// handle request monies...
})
.match(CheckStatus.class, check -> {
// ...
})
.build();
}
}
您会注意到铸造的需求已经消失了,并且需要确保手动打电话给未手动打电话。总体而言,新的API更容易做正确的事情。随着Akka的黎明在2018年初准备就绪,它将变得更好 - 请密切关注。
总的来说,如果您使用Java的Akka构建新事物,则只需忽略UntypedActor
的存在即可。它只是为了过去使用它来建造事物的人,以便他们可以在2.5的生命周期中平稳地更改为Abstractactor。