在Akka / Scala中,可以将参数传递给自定义接收函数,因此可以通过参数传递整个actor状态,而无需使用可变变量。
context.become(myCustomReceive(param1, param2))
但是在Java Api中,您只能传递将接收到的消息作为唯一参数的过程
getContext().become( new Procedure<Object> {
public void apply(Object param) throws Exception
{
// ...
}
}
是否有一种干净的方式在Java中执行相同的技巧?
答案 0 :(得分:1)
我会这样做
class ProcedureWithParams<T> extends Procedure<T> {
Object param1;
Object param2;
ProcedureWithParams(Object param1, Object param2) {
this.param1 = param1;
this.param2 = param2;
}
public void apply(Object param) throws Exception {
//access para1 and param2 here
}
}
getContext().become( new ProcedureWithParams(param1, param2))