与Java反射的互操作性
在Java平台上,标准库包含反射类的扩展,该扩展提供了与Java反射对象的相互映射(可以查看kotlin.reflect.jvm)。比如,为了找到一个备用字段或Java方法作为Kotlin属性的getter,你可以这样做:
import kotlin.reflect.jvm.*
class A(val p: Int)
fun main(args: Array<String>) {
println(A::p.javaGetter) // prints "public final int A.getP()"
println(A::p.javaField) // prints "private final int A.p"
}
为了获取与Java类相对应的Kotlin类,使用.kotlin扩展属性:
fun getKClass(o: Any): KClass<Any> = o.javaClass.kotlin