操作步骤:

1、加载类,如Class cla=Person.class

2、调用getMethod()/getDeclaredMethod方法,参数1是方法名称,参数2是方法所需要的参数。

     Method method = cla.getMethod("aa", String.class, int.class);

3、调用invoke()方法,第一个参数是类的对象,第二个参数是方法锁需要的参数。

     method.invoke(ps, "zhansan", 40);

-----------------------------------------------------------------------

例子:

public class Person {
    String name = "hello";
    int password;
    public  void aa(){
        System.out.println("方法aa");
    }
    public void aa(String name,int password){
        System.out.println(name+":"+password);
    }
    private void aa(InputStream in){
        System.out.println(in);
    }
    
    public static void aa(int num){
        System.out.println(num);
    }

--------------------------------------------------------------------------------------------------------------------

测试类:

public class Demo1 {
    Person ps = new Person();

    @Test
    //方法不需要参数
    public void demo() throws Throwable, SecurityException {
        Class cla = Person.class;
        // 第一个参数是方法名称,第二个参数是参数
        Method method = cla.getMethod("aa", null);
        // 第一个参数是对象,第二个是参数
        method.invoke(ps, null);
    }

    @Test
    //方法有两个参数
    public void demo2() throws Throwable, SecurityException {
        Class cla = Person.class;
        // 第一个参数是方法名称,第二个参数是参数
        Method method = cla.getMethod("aa", String.class, int.class);
        // 第一个参数是对象,第二个是参数
        method.invoke(ps, "zhansan", 40);
    }

    
    @Test
    //方法是私有库,且参数是FileInputStream类型。
    public void demo4() throws Throwable, SecurityException {
        Class cla = Person.class;
        // 第一个参数是方法名称,第二个参数是参数
        Method method = cla.getDeclaredMethod("aa", FileInputStream.class);
        method.setAccessible(true);
        // 第一个参数是对象,第二个是参数
        method.invoke(ps, new FileInputStream("c:\\1.txt"));
    }
    @Test
    //方法是static修饰的
    public void demo5() throws Throwable, SecurityException {
        Class cla = Person.class;
        // 第一个参数是方法名称,第二个参数是参数
        Method method = cla.getMethod("aa", int.class);
        // 第一个参数是对象,第二个是参数
        method.invoke(null, 23);
    }