christophsturm
12/25/2020, 12:12 PMobject S {
val string = "String"
}
fun main() {
println(measureTimeMillis {
StringProvider(S::class).getContext()
})
}
class StringProvider(val kClass: KClass<*>) {
fun getContext(): String {
return kClass.declaredMemberProperties.single { it.name == "string" }.call(kClass.objectInstance) as String
}
}
it takes 420ms on my macfun getContext(): RootContext {
val jClass = kClass.java
val obj = jClass.getDeclaredField("INSTANCE").get(null)
return jClass.getDeclaredMethod("getContext").invoke(obj) as RootContext
}