Java中发射机制非常重要,在框架中使用频繁
发射使用流程:
1、通过Class.classforName(“配置文件中的路径”); 获取 字节码文件
Class clazz = Class.forName("Reflect.Person");
2、通过 clazz.getConstructor(参数类型.class);获得 构造函数
Constructor con = clazz.getConstructor(null); //(构造函数参数类型)
使用 .newInstance(null);构造对象
p = (Person) con.newInstance(null); //给对象的参数
3、通过 clazz.getMethod(“方法名”,参数类型.class);获得 成员方法
Method method = clazz.getMethod("getName", null);//获取 getName();方法
method.incoke(“对象”,传参);
method.invoke(p, null);
4、通过clazz.getDeclaredMethod(“方法名”,参数类型.class);获得 私有方法
Method method = clazz.getDeclaredMethod("printTo", String.class);
通过method.setAccessible(true);设置访问权限
method.setAccessible(true); //暴力访问类私有方法
method.invoke(p,"xiehe");
5、通过clazz.getField(“字段名”);获取类的 字段属性
Field field = clazz.getField("add");//获得字段域
通过field.get(对像);获得字段值
String value = (String) field.get(p);
6、通过clazz.getDeclaredField(“字段名”);获得私有 字段属性
Field field = clazz.getDeclaredField("num");
field.setAccessible(true); //设置访问权限
int value = (int) field.get(p); //获取值