我在 Kotlin KClass 中看不到私有成员

XGo*_*het 5 kotlin kotlin-reflect

我正在开发一个使用反射的库,我想操作给定 KClass 的所有属性/函数。

使用该KClass::members属性,我可以操作所有可访问的成员(根据文档),即:公共、内部和受保护的字段、属性和函数。但我看不到私人的。

使用 Java 反射,我可以使用 来查看所有字段(包括私有字段)Class.getDeclaredFields(),同样我可以使用 来查看私有方法Class.getDeclaredMethods()

有没有办法使用 kotlin 反射 API 来做到这一点?

hot*_*key 3

是的,您可以使用declaredMembersdeclaredFunctionsdeclaredMemberProperties,它们将包含私有成员,但不会包含在超类型中声明的成员,就像 Java 反射 API 一样。