Following operators or methods used to work with types.
a. asInstanceOf
b. isInstanceOf
c. to<Type>
d. getClass
asInstanceOf method
asInstanceOf method is used to cast an instance to desired type. Since this method is defined in Any class, it is available for all the objects.
Example 1: 123.asInstanceOf[Long]
Above statement is equivalent to following statement in java.
int a = 123;
long b = a;
Example 2: 123.asInstanceOf[Short]
Above statement is equivalent to following statement in java.
int a = 123;
short b = (short)a;
scala> 123.asInstanceOf[Long]
val res4: Long = 123
scala> 123.asInstanceOf[Double]
val res5: Double = 123.0
scala> 123.asInstanceOf[Float]
val res6: Float = 123.0
scala> 123.asInstanceOf[Short]
val res7: Short = 123
scala> 123.asInstanceOf[Byte]
val res8: Byte = 123
When you try to cast incompatible types, you will end up in ClassCastException.
scala> "123".asInstanceOf[Long]
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
at scala.runtime.BoxesRunTime.unboxToLong(BoxesRunTime.java:103)
... 32 elided
to.<Type>
to.<Type> is used to convert one type to other.
Example
123.toLong
"123".toLong
scala> 123.toLong
val res11: Long = 123
scala> "123".toLong
val res12: Long = 123
scala> 123.toDouble
val res13: Double = 123.0
scala> "123".toDouble
val res14: Double = 123.0
When you are trying to convert incompatible types, you will end up in exception. For example, when you try to convert "123abc" to Long, you will end up in NumberFormatException.
scala> "123abc".toLong
java.lang.NumberFormatException: For input string: "123abc"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at scala.collection.StringOps$.toLong$extension(StringOps.scala:902)
... 32 elided
isInstanceOf
isInstanceOf is a boolean operator used to check whether given variable is an instance of a class or not.
Example
123.isInstanceOf[Int]
Above statement return true, if 123 is instance of Int type else false.
scala> 123.isInstanceOf[Int]
val res17: Boolean = true
scala> 123.isInstanceOf[Any]
val res18: Boolean = true
scala> "123".isInstanceOf[AnyRef]
val res20: Boolean = true
getClass
getClass return the class corresponding to given value.
Example
123.getClass
true.getClass
scala> 123.getClass
val res21: Class[Int] = int
scala> "123".getClass
val res22: Class[_ <: String] = class java.lang.String
scala> true.getClass
val res23: Class[Boolean] = Boolean
scala> List(2, 3, 5).getClass
val res24: Class[_ <: List[Int]] = class scala.collection.immutable.$colon$colon
No comments:
Post a Comment