反射机制的用途
通过对象、类名、字符串形式的 包名加类名 ,获取到该类的描述对象(class对象),通过该class对象可以将该类中的构造方法,成员方法,成员变量以对象的形式获取到,通过这些获取到的对象,我们就可以为成员变量赋值,执行成员方法、创建该类对象等操作。框架中大量使用该机制。
优点:灵活,易维护。
获取类中的内容
获取构造方法:
- 获取类中所有的公开的构造方法:类对象.getConstructors();
- 获取所有的构造方法:类对象.getDeclaredConstructors();
- 获取无参的构造方法:类对象.getConstructors();
- 获取带一个double类型的构造方法 类对象.getConstructor(double.class)
获取成员方法:
- 获取所有公开的成员方法 类对象.getMethods();
- 获取所有的成员方法 类对象.getDeclaredMethods();
- 获取某一个成员方 类对象.getMethod(方法名,参数);
获取成员变量:
- 获取所有公开的字段 类对象.getFields();
- 获取所有字段 类对象.getDeclaredFields();
- 获取某一个字段 类对象.getDeclaredField(字段名);
使用:
- 通过获取到的构造方法对象创建该类的对象 构造方法对象.newInstance();
- 通过获取到的成员方法对象执行该方法 成员方法对象.invoke(所属对象,参数);
- 通过获取到的字段对象为该字段赋值 字段对象.set(所属对象,值);
- 通过获取到的字段对象取出该字段值 字段对象.get(所属对象);