reflection - 如何在 Kotlin 中获取变量的运行时类?

标签 reflection kotlin

我想获得对变量的运行时 KClass 的引用。我浏览了关于类和反射的文档,但是 documentation 似乎只解释了如何获得对 KClass 的静态引用(例如 String::classString )

我需要一个变量的运行时 KClass。这似乎无法编译:

fun test(x: Any) {
    val klazz = x::class
} 

上面例子中KClassx是怎么得到的?

最佳答案

reference 所述,您可以使用 .javaClass.kotlin 获取对象的 KClass 标记。例子:

fun printKClass(x: Any) {
    val c = x.javaClass.kotlin
    println(c)
}

对于 KClass 的任何进一步操作,您还应该添加 kotlin-reflect library 作为依赖项,因为反射功能已移出 kotlin-stdlib

关于reflection - 如何在 Kotlin 中获取变量的运行时类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875478/

相关文章:

.net - 如何获取.NET中对象的全名?

java - 使用java反射在循环中调用编号的函数名称

kotlin - 如何在kotlin中的主要构造函数参数上添加注释

android - 在 kotlin 协程中实现 async-await()

android - 如何在 Android 中动态添加新的 android 芯片?

android - kapt 发生异常 : java. lang.OutOfMemoryError: 超出 GC 开销限制

c# - 如何使用私有(private) setter 将模拟接口(interface)分配给属性以进行单元测试?

reflection - 如何在 .NET Core 中检查类型是否是抽象的?

c# - 通过反射获取枚举值

java - 运行时异常 : Unable to instantiate activity ComponentInfo . .. ClassNotFoundException