Явное приведение типов в Scala
-
05-07-2019 - |
Вопрос
Допустим, у меня есть следующий код:
abstract class Animal
case class Dog(name:String) extends Animal
var foo:Animal = Dog("rover")
var bar:Dog = foo //ERROR!
Как мне исправить последнюю строку этого кода? По сути, я просто хочу сделать то, что на языке C-like будет сделано:
var bar:Dog = (Dog) foo
Решение
Я понял это сам. Есть два решения:
1) Выполните явное приведение:
var bar:Dog = foo.asInstanceOf[Dog]
2) Используйте сопоставление с образцом, чтобы привести его к вам, это также ловит ошибки:
var bar:Dog = foo match {
case x:Dog => x
case _ => {
// Error handling code here
}
}
Не связан с StackOverflow