Scala的getClass和类型擦除?

雷蒙德

当在泛型类型的情况下使用getClass方法时,我有些困惑:

def a[K](key: K) = {
  println(key.getClass)
}

这不应该一直是AnyRef或Any或其他东西吗?由于类型K信息在运行时不可用?

但是a(3)会输出Int,并且a("fdasf")会输出String.


好吧,这是一个愚蠢的问题,我对K和key的类型信息感到困惑。

马里奥·卡莫(Mario Camou)

在编译时,编译器不知道K的类型,而在运行时,您总是传递特定类型的对象。每个对象都知道它是什么类型。当您调用时getClass,您正在对该对象调用一个方法,因此您可以获取其实际类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章