Explizite Typumwandlung bei der Scala
-
05-07-2019 - |
Frage
Lassen Sie uns sagen ich den folgenden Code haben:
abstract class Animal
case class Dog(name:String) extends Animal
var foo:Animal = Dog("rover")
var bar:Dog = foo //ERROR!
Wie kann ich die letzte Zeile dieses Codes beheben? Grundsätzlich mag ich nur tun, was in einer C-ähnlichen Sprache erfolgen würde:
var bar:Dog = (Dog) foo
Lösung
Ich dachte, das aus mir. Es gibt zwei Lösungen:
1) Führen Sie die explizite Umwandlung:
var bar:Dog = foo.asInstanceOf[Dog]
2) Verwenden Sie Pattern-Matching es für Sie zu werfen, dies auch Fehler fängt:
var bar:Dog = foo match {
case x:Dog => x
case _ => {
// Error handling code here
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow