获取成员方法
-
Method getMethod(String name,Class<?>...parameterTypes):返回此Class对象对应类的指定public方法。
-
Method[]getMethods():返回此Class对象所表示的类的所有public方法。public class Person {
public void publicPersonA(){};protected void protectPersonB(){};void defaultPersonC(){};private void privatePersonD(){}; public static void test(){ } } public class Student extends Person{public void publicStudentA(){};protected void protectStudentB(){};void defaultStudentC(){};private void privateStudentD(String name){System.out.println(name);}//类方法也可以获取到public static void test(){ } } public class GetMethodDemo {public static void main(String[] args) throws NoSuchMethodException {//getMethod和getMethods()获取自身声明以及从父类继承的public修饰的方法Class<Student> student = Student.class;Method[] methods = student.getMethods();Method method = student.getMethod("test");System.out.println(method);} }
-
Method getDeclaredMethod(String name,Class<?>...parameterTypes):返回此Class对象对应类的指定方法,与方法的访问权限无关。
-
Method[] getDeclaredMethods():返回此Class对象对应类的全部方法,与方法的访问权限无关。
public class GetDeclaredMethodDemo {public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {Class clazz = Student.class;Student student = new Student();//获取自身声明的方法,与访问修饰符无关Method[] methods = clazz.getDeclaredMethods();//获取指定参数列表的方法Method method = clazz.getDeclaredMethod("privateStudentD",String.class);method.setAccessible(true);//能不能用Constructor的invoke()方法创建对象 不能,Constructor中没有invoke()方法method.invoke(student,"李四");} }