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
War es hilfreich?

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
scroll top