1、反射的定义
反射是Java的一个重要特性,反射是在运行状态中,对于任意一个对象,都能够知道这个对象所有的属性和方法,且能够调用它的任意方法和属性。
2、反射的使用场景
Java编码时知道类和对象的具体信息,此时直接对类和对象进行操作即可,无需反射
如果编码时不知道类或者对象的具体信息,此时应该使用反射来实现
比如类的名称放在XML文件中,属性和属性值放在XML文件中,需要在运行时读取XML文件,动态获取类的信息
在编译时根本无法知道该对象或类可能属于哪些类,程序只依靠运行时信息来发现该对象和类的真实信息
3、反射的机制原理
java类被加载后,生成Class类型的对象,反射的机制就是通过class类型对象操作该对象的一切内容。实现反射机制要借助4个类,class,Constructor,Field,Method。class类代表字节码对象,同时也是反射机制的起源和入口,Constructor代表构造器对象,Field代表类的属性对象,Method代表类的方法对象。
4、反射的用法
创建类实例的方法有三种:
第一种:类名.class
第二种:对象名.getClass();
第三种:class.forName();
常用方法:
getFields();获得类的所有的公共(public)的字段
getDeclaredFields();获得类的所有声明的字段,即包括public、private和proteced
getMethod();获得类的所有的公共(public)的方法
getDeclaredMethods();获得类的所有方法,即包括public、private和proteced
newInstance();创建新的对象
setAccessible();可以临时改变访问权限,就可以获取私有成员变量的值
method.invoke();执行调用方法