相关疑难解决方法(0)

如何在Akka接收方法上绕过类型擦除

我在Scala 2.10中使用蛋糕模式根据一些商业逻辑向我的演员注入所需的特征:

我有几种类型f事件:

 sealed abstract class Event(val timeStamp:Long)
  case class StudentEvent(override val timeStamp:Long, studentId:Long)  extends Event(timeStamp:Long)
  case class TeacherEvent(override val timeStamp:Long, teacherIdId:Long)  extends Event(timeStamp:Long)
Run Code Online (Sandbox Code Playgroud)

现在我有针对每种事件实现操作的特征:

抽象:

trait Action[T <: Event] {   
  def act[T](event:T):Unit
}
Run Code Online (Sandbox Code Playgroud)

两个推测:

trait StudentAction extends Action[StudentEvent]{
  override def act[StudentEvent](event:StudentEvent):Unit = println(event)
}
Run Code Online (Sandbox Code Playgroud)

和

trait TeacherAction extends Action[TeacherEvent]{
  override def act[TeacherEvent](event:TeacherEvent):Unit = println(event)
}
Run Code Online (Sandbox Code Playgroud)

现在我的演员:

class ActionActor[T <: Event] extends Actor{
  self:Action[T]=>

  override def receive= {
    case msg: T => act(msg)
    case _ => println("Unknown Type")
  }
} …
Run Code Online (Sandbox Code Playgroud)

dependency-injection scala akka

2
推荐指数
1
解决办法
772
查看次数

标签 统计

akka ×1

dependency-injection ×1

scala ×1