我可以使用kotlin.reflect来获得一个字段的值
class A{ private var p:MyObj? = null }
看来我不能通过A :: p得到p,或者我只能通过java获得它?
我的kotlin版本是
ext.kotlin_version = '1.1.4-2'
你不能得到它,因为你是在private
房屋以外的地方做的。 这里有几个选项:
- 创建一个函数返回
this::p
(fun func(): KProperty0<MyObj?> = this::p
) - 使该财产
public
- 使用反射。 这可能是最慢,性能最差和紧密耦合的选项。 只有当你不能使用其他人时才使用它。 你可以像这样使用Kotlin的反射:
A::class.memberProperties.find { it.name == "p" } as KProperty1<A, MyObj?>