Akka / Java getContext()。变成参数?

时间:2014-01-30 11:20:25

标签: java scala akka

在Akka / Scala中,可以将参数传递给自定义接收函数,因此可以通过参数传递整个actor状态,而无需使用可变变量。

context.become(myCustomReceive(param1, param2))

但是在Java Api中,您只能传递将接收到的消息作为唯一参数的过程

getContext().become( new Procedure<Object> {
  public void apply(Object param) throws Exception
  {
    // ... 
  }
}

是否有一种干净的方式在Java中执行相同的技巧?

1 个答案:

答案 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))