KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have been playing with basic Scala data types. I noticed that the scala.Any class defines the method asInstanceOf[T0]: T0 from here The API has it that it can "Cast the receiver object to be of type T0". Using this method as a starting point, I wanted to investigate casting in Scala. Also, I looked up stackoverflow for other questions on this topic and I came up with this With this information in hand, I wrote up a silly program. package com.att.scala import com.att.scala.Sheltie object Casting { //def foo(x: String){ def foo(x: Int) { println("x is " + x) //if(x.isInstanceOf[String]) if(x.isInstanceOf[Int]) println("Int x is " + x) //println("String x is " + x) } def entry() { //val double: Any = 123.123 val double: Double = 123.23 val int = double.asInstanceOf[Int] //exception expected here //val str: String = "123" foo(int) } } My goal is to understand what happens (and why) in the following cases: 1) casting from an Any type to an Int. 2) casting from Double type to an Int 3) casting from String to Int In the first case, I got a run time ClasscastException as below, when I ran the program as - com.att.scala.Casting.entry. The exception is shown below: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer at scala.runtime.BoxesRunTime.unboxToInt(Unknown Source) at com.att.scala.Casting$.entry(Casting.scala:17) In the second case, I get the follow
Tags (comma-separated)
Save Edits
Cancel