77

可以说我有以下代码:

abstract class Animal
case class Dog(name:String) extends Animal
var foo:Animal = Dog("rover")
var bar:Dog = foo //ERROR!

如何修复此代码的最后一行?基本上,我只想用一种类似 C 的语言做些什么:

var bar:Dog = (Dog) foo
4

1 回答 1

148

我自己想通了。有两种解决方案:

1)做明确的演员:

var bar:Dog = foo.asInstanceOf[Dog]

2)使用模式匹配为您转换它,这也会捕获错误:

var bar:Dog = foo match {
  case x:Dog => x
  case _ => {
    // Error handling code here
  }
}
于 2008-10-05T05:09:59.450 回答