黑马程序员技术交流社区

标题: 反射 [打印本页]

作者: wb277379322    时间: 2016-9-2 09:12
标题: 反射
反射:
        JAVA反射机制是在运行状态中,动态获取的信息以及动态创建对象,调用对象的方法的功能

        获取字节码文件对象:
                方式一:通过对象的getClass方法  
                方式二:类名.class直接获取  
                方式三:通过Class类的forName静态方法返回Class对象

        Class:字节码文件类,该类的每一个对象代表一个类。通过字节码文件对象,我们可以获取该类的构造方法、成                员变量、普通方法等信息。

        不带declared返回的公共访问权限的
        带declared返回的声明的       

        如果返回的构造、成员变量、成员方法是私有的,或者我们没有访问权限,可以调用setAccessible,将访问权限检查设置为true,处于关闭状态即可,这个过程叫做暴力访问。

        Constructor:构造方法
                public T newInstance(Object... initargs)  构造方法创建对象

        Field:成员变量、属性、域
                public Object get(Object obj) 获取指定对象的属性值
                public void set(Object obj, Object value) 设置指定对象的属性值

        Method: 普通方法
                public Object invoke(Object obj, Object... args)  通过指定的对象调用该方法

反射应用场景:
        1反射绕过泛型检查
                反射ArrayList类中参数为Object类型的add方法,调用该方法时,可以添加任意类型的值。
                如果一个集合指定了泛型Integer,通过以上反射到的add方法,仍然可以添加其他类型的值。
        2通过配置文件动态反射类与方法
                当逻辑中固定的完成反射创建某个类与反射调用某个方法后,其类名与方法名可以从配置文件中读取,从而达到动态创建不同的类,调用不同的方法的目的。

作者: accomplonely    时间: 2016-9-2 20:30
笔记不错
作者: DaoDao2    时间: 2016-9-2 21:29
好笔记啊
作者: 18366882177    时间: 2016-9-3 08:51
干货顶一下
作者: itcoder    时间: 2016-9-3 20:02
顶顶顶顶顶顶顶顶顶顶顶
作者: 左冬至1111111    时间: 2016-9-3 21:08
  带declared返回的声明的        
作者: NewBeeCoder    时间: 2016-9-3 22:07
值得学习 赞一个
作者: q554293427    时间: 2016-9-4 01:13
可以,我都不知道反射能用在哪里




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2