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类、类库分析、自动生成代码等。