在 Java 中,Method.getDeclaredMethod(String name, Class<?>... parameterTypes) 方法有两个参数:
- name 参数是 String 类型,表示要获取的方法的名称。
- parameterTypes 参数是 Class<?> 类型的可变参数,表示要获取的方法的参数类型。
这个方法会返回一个 Method 对象,表示由这个类声明的、具有指定名称和参数类型的方法。
请注意,这个方法只会在当前类中查找方法,并不会查找超类或接口中的方法。如果找不到对应的方法,则会抛出 NoSuchMethodException 异常。
例如:
Class<?> clazz = Class.forName("java.util.ArrayList");
Method m = clazz.getDeclaredMethod("add", Object.class);
这段代码会获取 ArrayList 类中声明的方法 add(Object),并且返回一个 Method 对象。
在参数类型中,如果方法的参数是一个数组,则应该传入数组的 Class 对象。例如,如果要获取 void add(int[] arr) 方法,则需要这样调用:
Method m = clazz.getDeclaredMethod("add", int[].class);
如果要获取一个重载的方法,则可以传递多个 Class<?> 实例,表示不同的参数类型,例如:
Method m = clazz.getDeclaredMethod("add", int.class, double.class);
但是,如果有多于一个匹配的方法,则会抛出 AmbiguousException 异常。
总的来说,Method.getDeclaredMethod(String name, Class<?>... parameterTypes) 方法可以让你在运行时获取一个类中声明的方法,并对其进行操作。