我可以使用kotlin.reflect来获得一个字段的值

class A{ private var p:MyObj? = null } 

看来我不能通过A :: p得到p,或者我只能通过java获得它?

我的kotlin版本是

 ext.kotlin_version = '1.1.4-2' 

你不能得到它,因为你是在private房屋以外的地方做的。 这里有几个选项:

  1. 创建一个函数返回this::pfun func(): KProperty0<MyObj?> = this::p
  2. 使该财产public
  3. 使用反射。 这可能是最慢,性能最差和紧密耦合的选项。 只有当你不能使用其他人时才使用它。 你可以像这样使用Kotlin的反射: A::class.memberProperties.find { it.name == "p" } as KProperty1<A, MyObj?>