Scala:案例类转换为对象

ani*_*u99 1 scala akka

我有两个这样的案例类 -

case class GetList()
case class Add(num: Int)
Run Code Online (Sandbox Code Playgroud)

我有一个演员,其接收方法如下所示 -

override def receive() = {
  case a: Add => // do something
  case g: GetList => // do something
  case x: Any => // something
}
Run Code Online (Sandbox Code Playgroud)

我叫演员为 -

ref ! Add(1)
ref ! GetList
Run Code Online (Sandbox Code Playgroud)

对于Add(1)消息,我得到了一个点击:添加接收.但是对于GetList消息,它将转到x:Any.仔细观察后,我发现我得到的实例是GetList $类型,通常表示"对象".

谁在进行这种转换?为什么?这种奇怪的行为背后的理由是什么?

The*_*0s3 6

你最好做GetList一个case object代替所以你的新代码看起来像case object GetList这样你不必担心空括号.另外需要注意的是,空案例类也已被弃用.