public class TestStudent {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
//(1)获取Student类的Class对象
Class aClass = Class.forName("com.bjsxt.entity.Student");
//(2)创建Student类的对象
//a)使用Class类的newInstance()方法
Student o = (Student)aClass.newInstance();
// b)先获取Student的构造方法对象,再通过构造方法对象的newInstance()方法得到Student类的对象
Constructor constructor = aClass.getConstructor();
Object o1 = constructor.newInstance();
//(3)获取赋值的方法对象
Method setStuId = aClass.getMethod("setStuId", String.class);//String.class是赋值的方法的形参的数据类型
Method setStuName = aClass.getMethod("setStuName", String.class);
//(4)执行赋值的方法给属性赋值
setStuId.invoke(o,"1001");
setStuName.invoke(o,"张三");
//(5)调用toString方法
Method toString = aClass.getMethod("toString");
//执行toString方法
String invoke =(String) toString.invoke(o);
System.out.println(invoke);
System.out.println("----------------以上代码可以使用一句正常代码来实现---------------------------");
System.out.println(new Student("1001","张三"));
}
}
反射的思维导图及小案例
最新推荐文章于 2019-11-25 15:21:48 发布