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文檔中有關刪除類型的評論顯然不適用。 –