如何才能通过名称获得对Kotlin对象的引用?
如果我有一个顶层对象声明如何才能通过名称获得对Kotlin对象的引用?
package com.example object MyObject {}
我怎么能转换成字符串com.example.MyObject
进入到MyObject
参考?
回答:
如果你在classpath有kotlin-reflect
那么你可以使用的KClass
fun main(args: Array<String>) { val fqn = "com.example.MyObject"
val clz: Class<*> = Class.forName(fqn)
val instance = clz.kotlin.objectInstance
println(instance) // [email protected]
}
的objectInstance
财产,如果你没有做kotlin-reflect
那么你可以用普通的老式java做到这一点
fun main(args: Array<String>) { val fqn = "com.example.MyObject"
val clz: Class<*> = Class.forName(fqn)
val field: Field = clz.getDeclaredField("INSTANCE")
val instance = field.get(null)
println(instance) // [email protected]
}
回答:
您可以使用科特林反射,例如:
val it = Class.forName("com.example.MyObject").kotlin.objectInstance as MyObject;
回答:
相同的java代码,您需要使用Class.forName("com.example.MyObject")
。现在你有一个Java类,但使用kotlin
扩展名,它将转换为Kotlin类。 Class.forName("com.example.MyObject").kotlin
以上是 如何才能通过名称获得对Kotlin对象的引用? 的全部内容, 来源链接: utcz.com/qa/262001.html