• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何才能通过名称获得对Kotlin对象的引用?

reflection 来源:Duncan McGregor 3次浏览

如果我有一个顶层对象声明如何才能通过名称获得对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] 
} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)