当在泛型类型的情况下使用getClass方法时,我有些困惑:
def a[K](key: K) = {
println(key.getClass)
}
这不应该一直是AnyRef或Any或其他东西吗?由于类型K信息在运行时不可用?
但是a(3)
会输出Int
,并且a("fdasf")
会输出String.
好吧,这是一个愚蠢的问题,我对K和key的类型信息感到困惑。
在编译时,编译器不知道K
的类型,而在运行时,您总是传递特定类型的对象。每个对象都知道它是什么类型。当您调用时getClass
,您正在对该对象调用一个方法,因此您可以获取其实际类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句