11
asInstanceOf가 ClassCastException을 throw하지 않는 이유는 무엇입니까? scaladoc에서asInstanceOf가 ClassCastException를 Throw하지 않는 이유는 무엇입니까?
scala> List("a").asInstanceOf[List[Int]]
res34: List[Int] = List(a)
asInstanceOf가 ClassCastException을 throw하지 않는 이유는 무엇입니까? scaladoc에서asInstanceOf가 ClassCastException를 Throw하지 않는 이유는 무엇입니까?
scala> List("a").asInstanceOf[List[Int]]
res34: List[Int] = List(a)
: 런타임에 캐스트의 성공은 모듈로 스칼라의 삭제 의미입니다
참고. 따라서 표현식 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
이 재미있다 – tuxdna