2014-09-28 11 views

Trả lời

14

Từ scaladoc:

Lưu ý rằng sự thành công của một dàn diễn viên trong thời gian chạy là ngữ nghĩa tẩy xoá modulo Scala của. Do đó, biểu thức 1.asInstanceOf [String] sẽ ném ra một ClassCastException khi chạy, trong khi danh sách biểu thức (1) .asInstanceOf [List [String]] sẽ không. Trong ví dụ sau, vì đối số kiểu được xóa như một phần của trình biên dịch, không thể kiểm tra xem nội dung của danh sách có thuộc loại được yêu cầu hay không.

Nếu bạn cố gắng truy cập vào các biến hoặc bản đồ chuyển đổi nó correclty ném một ngoại lệ:

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

này là thú vị – tuxdna

Các vấn đề liên quan