Java反射-方法内省

Java反射-方法内省,java,reflection,Java,Reflection,数组是否包含该类的所有方法?公共、私人、受保护和所有继承? 我能接触到所有这些信息吗?主要是私人和受保护的信息 如果没有,我如何获得一个类的所有方法并访问所有方法 这一点非常清楚: 返回一个数组,该数组包含反映该类对象表示的类或接口的所有公共成员方法的方法对象,包括由类或接口声明的方法以及从超类和超接口继承的方法 要获取非公共方法,请使用。从: 返回包含方法的数组 反映所有公众的物体 类的成员方法或 由该类表示的接口 对象,包括 类或接口以及 继承自超类和 超级界面 所以它只提供公共方法。要获取

数组是否包含该类的所有方法?公共、私人、受保护和所有继承? 我能接触到所有这些信息吗?主要是私人和受保护的信息

如果没有,我如何获得一个类的所有方法并访问所有方法

这一点非常清楚:

返回一个数组,该数组包含反映该类对象表示的类或接口的所有公共成员方法的方法对象,包括由类或接口声明的方法以及从超类和超接口继承的方法

要获取非公共方法,请使用。

从:

返回包含方法的数组 反映所有公众的物体 类的成员方法或 由该类表示的接口 对象,包括 类或接口以及 继承自超类和 超级界面

所以它只提供公共方法。要获取所有方法,必须对类及其所有超类使用
getDeclaredMethods()
(通过
getSuperclass()


为了调用非公共方法,您可以在
方法
对象上使用
setAccessible(true)
(如果安全管理器允许)。

要获取类的所有方法,您需要递归调用该类及其所有超类上的getDeclaredMethods()。根据您想用它实现什么,您可能需要删除由于方法重载而可能出现的重复项。

-1有关可通过阅读javadocSo getMethods()+getDeclaredMethods()-在calss=所有类方法中声明的公共方法来回答的问题?
getMethods()+getDeclaredMethods()
提供直接在类中实现的所有公共方法和private+protected方法,但不提供其超类的private和protected方法。
Method[] theMethods = myClass.getMethods();
for( Method m : theMethods ){
...

}