我怎样才能得到一个Kotlin对象的名字?

如果我有顶级对象声明

package com.example object MyObject {} 

如何将字符串com.example.MyObject转换为对MyObject的引用?

如果你在类路径上有kotlin-reflect ,那么你可以使用objectInstance属性

 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 } 

如果你没有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 } 

你可以使用kotlin反射,例如:

 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