2014-09-28 1 views

답변

14

: 런타임에 캐스트의 성공은 모듈로 스칼라의 삭제 의미입니다

참고. 따라서 표현식 1.asInstanceOf [String]은 런타임에 ClassCastException을 던지며, 표현식 List (1) .asInstanceOf [List [String]]는 그렇지 않습니다. 후자의 예제에서 type 인수는 컴파일의 일부로 지워지기 때문에 목록의 내용이 요청 된 유형인지 여부를 확인할 수 없습니다.

당신이 변수에 액세스하거나 correclty 예외가 발생 변환을 매핑 할 경우

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

이 재미있다 – tuxdna

관련 문제