public static void main(String[] args) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
Class student = Student.class;
//通过反射获取一个无参构造对象
Student s1 = (Student) student.newInstance();
System.out.println(s1);
//通过反射获取一个有参构造对象
Constructor constructor = student.getConstructor(Integer.class, String.class, int.class);
Student s2 = (Student) constructor.newInstance(18, "小红", 1);
System.out.println(s2);
//通过反射调用普通方法
//先获取一个对象
Student s3 = (Student) student.newInstance();
//获取一个方法
Method setName = student.getDeclaredMethod("setName", String.class);
//invoke:激活(对象,方法的值)
setName.invoke(s3,"红红");
System.out.println(s3.getName());
//通过反射操作属性
Student s4 = (Student) student.newInstance();
Field name = student.getDeclaredField("name");
///不能直接操作私有属性
//关闭安全检测
name.setAccessible(true);
name.set(s4,"敏敏");
System.out.println(s4.getName());
}
通过反射操作属性小栗子
最新推荐文章于 2022-09-12 16:10:22 发布