2014-09-28 23 views

Odpowiedz

14

Z scaladoc:

Należy pamiętać, że sukces gipsie w czasie wykonywania jest semantyka Erasure Modulo Scala. Dlatego wyrażenie 1.asInstanceOf [String] rzuci wyjątek ClassCastException w czasie wykonywania, podczas gdy wyrażenie List (1) .asInstanceOf [List [String]] nie będzie. W tym ostatnim przykładzie, ponieważ argument typu jest usuwany jako część kompilacji, nie można sprawdzić, czy zawartość listy jest żądanego typu.

przypadku próby uzyskania dostępu do zmiennej lub map konwersję to correclty zgłasza wyjątek:

scala> List("a").asInstanceOf[List[Int]] 
res0: List[Int] = List(a) 

scala> res0 
res1: List[Int] = List(a) 

scala> res0(0) 
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 

List("a").map(_.asInstanceOf[Int]) 
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 
+2

ten jest interesujący – tuxdna

Powiązane problemy