Neden asInstanceOf bir ClassCastException atar? scaladoc itibarenNeden asInstanceOf bir ClassCastException atar?
scala> List("a").asInstanceOf[List[Int]]
res34: List[Int] = List(a)
Neden asInstanceOf bir ClassCastException atar? scaladoc itibarenNeden asInstanceOf bir ClassCastException atar?
scala> List("a").asInstanceOf[List[Int]]
res34: List[Int] = List(a)
: zamanında bir döküm başarısı modülo Scala'nın silme semantik olduğunu
Not. Bu nedenle, 1.asInstanceOf [String] ifadesi, çalışma zamanında ClassCastException atar, buna karşılık, List (1) .asInstanceOf [List [String]] ifadesi kullanılmaz. Son örnekte, tip argümanı derlemenin bir parçası olarak silindiğinden, listenin içeriğinin istenen tipte olup olmadığını kontrol etmek mümkün değildir.
Eğer değişken erişmek veya correclty bir istisna atar dönüşüm haritasına çalışırsanız:
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
bu ilginç – tuxdna