详解Java的getDeclaredMethods()方法:返回该类中声明的所有方法的数组

  • Post category:Java

Java中的getDeclaredMethods()方法用于获取一个类中的所有方法,包括公共、私有和受保护的方法。该方法返回一个Method对象数组,每个Method对象对应一个类的方法。

使用该方法需要在Java反射机制中使用,需要在代码中导入java.lang.reflect.Method类,并使用Class对象调用getDeclaredMethods()方法。

下面是getDeclaredMethods()方法的使用步骤:

步骤1:获取类的Class对象

首先,需要获取要查找方法的类的Class对象。有多种方法可以获取类的Class对象,例如使用类的静态变量class,或使用Class.forName()方法。

如下代码以Person类为例:

Class<Person> clazz = Person.class;

步骤2:获取类中的方法

接着,使用getDeclaredMethods()方法获取类中的所有方法,如下:

Method[] methods = clazz.getDeclaredMethods();

步骤3:遍历所有方法

最后,可以遍历方法数组,逐个获取每个方法的名称、返回类型和参数类型等方法信息,如下:

for (Method method : methods) {
    System.out.println("Method name: " + method.getName());
    System.out.println("Return type: " + method.getReturnType());
    System.out.println("Parameter types: " + Arrays.toString(method.getParameterTypes()));
    System.out.println("Modifiers: " + Modifier.toString(method.getModifiers()));
}

其中Method类的常用方法如下:

  • getName():获取方法的名称。
  • getReturnType():获取方法的返回类型。
  • getParameterTypes():获取方法的参数类型数组。
  • getModifiers():获取方法的修饰符。

示例1:获取String类中的所有方法:

Class<String> clazz = String.class;
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
    System.out.println(method.getName());
}

示例2:获取Person类的toString()方法:

Class<Person> clazz = Person.class;
Method method = clazz.getDeclaredMethod("toString");
System.out.println(method);

上述代码使用getDeclaredMethod()方法获取Person类中的toString()方法,并输出该方法的Method对象。

注意,如果要获取的方法是私有方法,需要使用getDeclaredMethod()方法并设置Accessible为true,否则会抛出IllegalAccessException异常,如下:

method.setAccessible(true);

getDeclaredMethods()方法的应用场景包括反编译Java类、类库分析、自动生成代码等。