反射:反射允许对封装类的字段,方法和构造函数的信息进行编程访问
获取class对象的三种方式:
1.Class.forName("全类名");------源代码阶段
2.类名.class-------------------加载阶段
3.对象.getClass();-------------运行阶段
全类名:包名+类名模式
软件(eclipse)获取全类名方式:选中类名--右键--复制限定名 即可!
JAVA中万物皆可对象
Class字节码文件----------Class对象
构造方法----------------Constructor对象
字段(成员变量)----------Field对象
成员方法----------------Method对象
利用反射获取构造方法:
class类中用于获取构造方法的方法:
Constructor<?>[] getConstructors(): 返回所有公共构造方法对象的数组
Constructor<?>[] getDeclaredConstructors(): 返回所有构造方法对象的数组
Constructor<T> getConstructor(Class<?>...parameterTypes): 返回单个公共构造方法对象
Constructor<T> getDeclaredConstructor(Class<?>...parameterTypes):返回单个构造方法对象
Constructor类中用于创建对象的方法:
T newInstance(Object...initargs): 根据指定的构造方法创建对象
setAccessible(boolean flag): 设置为true,表示取消访问检查
Class类中用于获取成员变量的方法
Field[] getFields():返回所有公共成员变量对象的数组
Field[] getDeclaredFields():返回所有成员变量对象的数组
Field getField(String name):返回单个公共成员变量对象
Field getDeclaredField(String name):返回单个成员变量对象
Field类中用于创建对象的方法
void set(Object obj, Object value): 赋值
Object get(Object obj) 获取值。