如果我有一个顶级对象声明
package com.example
object MyObject {}
Run Code Online (Sandbox Code Playgroud)
如何将字符串com.example.MyObject转换为引用MyObject?
如果你有kotlin-reflect类路径,那么你可以使用的objectInstance属性KClass
fun main(args: Array<String>) {
val fqn = "com.example.MyObject"
val clz: Class<*> = Class.forName(fqn)
val instance = clz.kotlin.objectInstance
println(instance) // com.example.MyObject@71623278
}
Run Code Online (Sandbox Code Playgroud)
如果你没有,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) // com.example.MyObject@76ed5528
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1235 次 |
| 最近记录: |