2017-06-20 79 views

回答

5

如果你在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] 
} 
1

您可以使用科特林反射,例如:

val it = Class.forName("com.example.MyObject").kotlin.objectInstance as MyObject; 
0

相同的java代碼,您需要使用Class.forName("com.example.MyObject")。現在你有一個Java類,但使用kotlin擴展名,它將轉換爲Kotlin類。 Class.forName("com.example.MyObject").kotlin

相關問題