JAVA反射机制学习随笔

时间:2023-03-09 03:02:45
JAVA反射机制学习随笔

JAVA反射机制是用于在运行时动态的获取类的信息或者方法,属性,也可以用来动态的生成类,由于所有类都是CLASS的子类,我们可以用一个CLASS类的实例来实例化各种类

例如:

 Class<?> class1 = null;
Class<?> class2 = null; //写法1, 可能抛出 ClassNotFoundException [多用这个写法]
class1 = Class.forName("cn.lee.demo.Person");
System.out.println("Demo2:(写法1) 包名: " + class1.getPackage().getName() + ","
+ "完整类名: " + class1.getName()); //写法2
class2 = Person.class;
System.out.println("Demo2:(写法2) 包名: " + class2.getPackage().getName() + ","
+ "完整类名: " + class2.getName());

这是常用的形式

还有一种是获取内部的方法/属性

Class<?> class1 = null;
class1 = Class.forName("cn.lee.demo.Person");
Object obj = class1.newInstance(); Field personNameField = class1.getDeclaredField("name");
personNameField.setAccessible(true);
personNameField.set(obj, "胖虎先森"); System.out.println("Demo5: 修改属性之后得到属性变量的值:" + personNameField.get(obj));

可以操作类内部的属性和方法