Kevin Albrecht
Kevin Albrecht

Reputation: 7014

Explicit Type Conversion in Scala

Lets say I have the following code:

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

How do I fix the last line of this code? Basically, I just want to do what, in a C-like language would be done:

var bar:Dog = (Dog) foo

Upvotes: 78

Views: 70751

Answers (1)

Kevin Albrecht
Kevin Albrecht

Reputation: 7014

I figured this out myself. There are two solutions:

1) Do the explicit cast:

var bar:Dog = foo.asInstanceOf[Dog]

2) Use pattern matching to cast it for you, this also catches errors:

var bar:Dog = foo match {
  case x:Dog => x
  case _ => {
    // Error handling code here
  }
}

Upvotes: 149

Related Questions