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