详解Java的getDeclaredMethods()方法:返回一个包含 Method 对象的数组

  • Post category:Java

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类中所有方法的通用方式。