public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InstantiationException,
        IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        // Object invoke(Object obj, Object... args)
        // 参数1:用obj对象调用该方法
        // 参数2:调用的方法传递的参数(如果没有就不写)
        // 返回值:方法的返回值,没有就不写
        // 获取Class对象
        Class clazz = Class.forName("reflect.Student");
        // 获取单个公共的成员方法getMethod(String name, Class<?>... parameterTypes)
        // 参数1是方法名,参数2是方法的参数,方法没有参数可以不写
        Method method = clazz.getMethod("show2", String.class);
        // 获取调用方法的对象
        Student stu = (Student)clazz.newInstance();
        // 调用方法
        Object invoke = method.invoke(stu, "zhangsan");
        System.out.println(invoke);
    }
public class Student {
    public String name;
    public int age;
    private int money = 100;
    public void show() {
        System.out.println("公共方法");
    public void show1(String name) {
        System.out.println("公共有参方法");
    public String show2(String name) {
        System.out.println("公共有参方法");
        return "返回的参数:" + name;
    private void test() {
        System.out.println("私有方法:");
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + ", money=" + money + "]";