我在 Kotlin KClass 中看不到私有成员
I can't see private members in a Kotlin KClass
我正在开发一个使用反射的库,我想操纵给定 KClass 的所有属性/函数。
使用 KClass::members
属性,我可以操作所有可访问的成员(根据文档),即:public、内部和受保护的字段、属性和函数。但是我看不到私人的。
使用 Java 反射,我可以使用 Class.getDeclaredFields()
查看所有字段(包括私有字段),同样我可以使用 Class.getDeclaredMethods()
查看私有方法。
有没有办法使用 kotlin 反射来做到这一点 API?
是的,您可以使用 declaredMembers
, declaredFunctions
, and declaredMemberProperties
,它将包含私有成员,但不会包含超类型中声明的成员,就像 Java 反射 API.
我正在开发一个使用反射的库,我想操纵给定 KClass 的所有属性/函数。
使用 KClass::members
属性,我可以操作所有可访问的成员(根据文档),即:public、内部和受保护的字段、属性和函数。但是我看不到私人的。
使用 Java 反射,我可以使用 Class.getDeclaredFields()
查看所有字段(包括私有字段),同样我可以使用 Class.getDeclaredMethods()
查看私有方法。
有没有办法使用 kotlin 反射来做到这一点 API?
是的,您可以使用 declaredMembers
, declaredFunctions
, and declaredMemberProperties
,它将包含私有成员,但不会包含超类型中声明的成员,就像 Java 反射 API.