在 Akka (Java) 教程中已弃用的“UntypedActor”的解决方案
原始代码
Akka教程有以下代码:http://doc.akka.io/docs/akka/2.0.2/intro/getting-started-first-java.html
public void calculate (final int nrOfWorkers, final int nrOfElements, final int nrOfMessages){
ActorSystem system = ActorSystem.create("PiSystem");
final ActorRef listener = system.actorOf(Props.create(Listener.class), "listener");
ActorRef master = system.actorOf(new Props(new UntypedActorFactory() {
public UntypedActor create() {
return new Master(nrOfWorkers, nrOfMessages, nrOfElements, listener);
}
}), "master");
master.tell(new Calculate(), ActorRef.noSender());
}
其中,已弃用。UntypedActorFactory
我的模组
所以我尝试使用这样的Props.create
ActorRef master = system.actorOf( Props.create(
new Creator<Master>(){
public Master create(){
return new Master(nrOfWorkers, nrOfMessages, nrOfElements, listener);
}
}), "master");
还有例外的说法
不能使用非静态本地 Creator 来创建 actor;使其成为静态或顶级
所以我开始写一个静态类,它有需要传递的参数。
static class LocalCreator implements Creator<Master>{
public Master create(){
return new Master(nrOfWorkers, nrOfMessages, nrOfElements, listener);
}
}
问题
如何将参数nrOfWorkers等优雅地传递到函数中?create()