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 + "]";