Java中的getDeclaredMethods()方法是Class类中的一个方法,它用于获取当前类或接口的所有“已声明方法(declared method)”,也就是当前类和其父类中所有的方法,但是不包括从接口继承的方法。
方法声明
方法声明指的是在程序中被定义的方法。例如,一个方法的声明可能如下所示:
public void myMethod(int param1, String param2) throws IOException {
// method body
}
该方法的声明包含方法的签名(包括参数类型和参数名称),以及方法体。通过调用getDeclaredMethods()方法,我们可以获取到该类所有已声明方法的对象列表,因此我们可以动态地获取其方法签名,调用该方法并执行其中的代码。
使用示例
下面是一个示例,展示如何使用getDeclaredMethods()方法。假设我们有以下Java文件:
public class MyClass {
public void myMethod1() {
System.out.println("myMethod1");
}
private void myMethod2() {
System.out.println("myMethod2");
}
}
我们想要通过反射获取这个类的所有方法,包括私有方法。我们可以按照如下方式来使用getDeclaredMethods()方法:
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) {
Class<?> clazz = MyClass.class;
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
}
}
运行上面的代码,我们会看到输出结果中包含了myMethod1()和myMethod2()两个方法的名称。需要注意的是,该方法返回的数组中顺序是无法确定的。
下面是另一个使用示例,展示如何通过getDeclaredMethods()方法获取Object类中定义的所有方法:
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) {
Class<?> clazz = Object.class;
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
}
}
当我们运行上面的代码时,我们会看到输出结果中包含了Object类中所有已声明的方法的名称。这种方式是获取任意Java类中所有方法的通用方式。