一.什么是反射?
1.反射是一种机制,利用反射机制动态的实例化对象、读写属性、调用方法、构造函数。
二.获取类对象的方式
1.如何得到类对象
一切反射相关的代码都从获得类对象开始。
- 三种获取方式:
- 类名.class;
- 对象名.getClass();
3 .Class.forName(全限定名/全路径名);
注:ClassNotFoundException(类不存在 || 缺少Jar包)
同一个类,类对象只能被加载一次
3.根据类得到类名(全限定名/全路径名)
1)cName.getName(); 获取全限定名
2)cName.getSimpleName(); 获取类名
3)cName.getPackage(); 获取包名
三.获取属性,方法
1.根据类得到类的属性
1.1获取值
Field field=cla.getField(“属性名”);
field.getName(); 获取属性名
filed.getType(); 获取属性类型
field.getModifiers(); 获取属性访问修饰符
1.2赋值
field.set(Object,Object); 设置属性值,参数1:要设置属性所在对象;参数2:要设置的值;
field.get(Object); 获取属性值,参数:要获取属性值的对象
field.getDeclaredField(“属性名”); 获取单个属性
field.getDeclaredFields(); 获取所有属性
2.根据类得到类的方法
cla.getMethod(); 获取单个公有方法
cla.getDeclaredMethod(); 获取单个方法
cla.getMethods(); 获取所有公有方法
cla.getDeclaredMethods(); 获取所有的方法
注:1)通过getDeclaredMethod调用方法时,请设置方法的访问权限 setAccessible(true)
2)执行方法关键字:invoke