假设我们具有通用功能:funfoo(o:T){o::class}这o::class的类型是KClass。为什么有差异注释,为什么没有KClass(因为T的擦除是Any)这种差异注释搞砸了我的不错的反射代码编辑:挖了一段时间后,我发现科特林依靠Object::getClass得到一个Class创建一个KClass,实际创建代码具有类似的签名funcreate(jClass:Class):KClass。但是,这导致了另一个问题。这o::class应该是类型KClass因为jClass该创建方法的参数应为类型Class,由于静态类型的擦除T只是Any(或者Object,在JVM上映射到)。看答案为什