反射
为什么我们需要反射?
因为反射就是通过找到一个类的CLASS对象,从而对该类的属性和方法进行操作,可以理解为使用了一个镜子来操控类。
反射原理图
反射优化
类加载的过程
反射的演示
//得到Class对象
Class<?> stuClass = Class.forName("reflection.Student");
//有参数时创建实例,通过构造器对象创建
Constructor<?> constructor = stuClass.getConstructor(String.class);
Object hsp = constructor.newInstance("hsp");
//无参数时,可以直接创建对象
Object o = stuClass.newInstance();
System.out.println(o.getClass());
Field name = stuClass.getField("name");
name.set(o,"age");
System.out.println(name.get(o));
Field year = stuClass.getDeclaredField("year");
year.setAccessible(true);//这里是使用爆破来访问私有属性
year.set(o,77);
year.set(null,77);//类变量可以直接设置
System.out.println(year.get(o));
Method setName = stuClass.getDeclaredMethod("setName", String.class);
Method setYear = stuClass.getDeclaredMethod("setYear", int.class);
setName.invoke(o,"age");
setYear.invoke(null,24);//方法反向调用
System.out.println(name.get(o));
标签:反射,Java,name,stuClass,Robyn,System,学习,year,println
From: https://www.cnblogs.com/robyn2022/p/16800894.html