scala> def g[T] = 1.asInstanceOf[T]
g: [T]=> T
scala> g[String]
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
... 32 elided
scala> { g[String]; 1 }
res0: Int = 1
但是:1.asInstanceOf [T]为什么不抛出ClassCastException?
scala> def f = 1.asInstanceOf[String]
f: String
scala> { f; 1 }
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at .f(<console>:7)
... 32 elided
什么是这里的逻辑是什么?如何在类型参数化函数中触发ClassCastException
?
http://www.scala-lang.org/api/current/index.html#[email protected][T0]:T0 –
但我铸造到'字符串',而不是参数类型。 Scala文档中有关删除类型的评论显然不适用。 –