反射的原理

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();执行调用方法


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容