为什么从Class [String]到Class [Any]的类型转换成功编译?
object Test extends App {
var anyClass: Class[Any] = classOf[Any]
val strClass: Class[String] = classOf[String]
/* The following codes compile error: Expression of type Class[String] doesn't conform to expected type Class[Any]. */
//oClass = sClass
/* The following codes compile and run successfully. */
val str2anyClass = strClass.asInstanceOf[Class[AnyRef]]
println(str2anyClass.toString) // Output: class java.lang.String
}
答案 0 :(得分:2)
为什么从Class [String]到Class [Any]的类型转换编译 成功吗?
由于Class[A]
中的A
不变,并且根据Scala规范,您的代码无效。
当您使用asInstanceOf
显式投射时,所有投注均已关闭,您告诉编译器您知道自己在做什么以及它应该信任您。