如何在 Kotlin 中获取对象的 KClass 而不是 Java 的 getClass()?
你好!我正在从 Java 迁移到 Kotlin,遇到了一个问题。在 Java 中,我经常使用 getClass() 来获取运行时对象的类信息。例如:
Object obj = "Hello";
Class<?> clazz = obj.getClass(); // 获取 java.lang.Class
System.out.println(clazz.getName()); // 输出 java.lang.String
在 Kotlin 中,我知道有 KClass——它是 java.lang.Class 的对应物,但如何获取它?我尝试了这样:
val obj: Any = "Hello"
val clazz = obj::class // 错误:"This expression is not a class reference"
或者这样:
val clazz = obj.javaClass // 可以工作,但返回的是 java.lang.Class,而不是 KClass
我确实需要 KClass,因为我正在使用 Kotlin 反射(例如,与 kotlinx.serialization 一起用于序列化)。如何从对象实例正确获取 KClass?以及它们之间的区别是什么?