次のコードがあるとしましょう:
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
私は自分でこれを理解しました。 2つの解決策があります。
1)明示的なキャストを行います:
var bar:Dog = foo.asInstanceOf[Dog]
2)パターンマッチングを使用してキャストします。これもエラーをキャッチします。
var bar:Dog = foo match {
case x:Dog => x
case _ => {
// Error handling code here
}
}