A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wb277379322 中级黑马   /  2016-9-2 09:12  /  740 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射:
        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通过配置文件动态反射类与方法
                当逻辑中固定的完成反射创建某个类与反射调用某个方法后,其类名与方法名可以从配置文件中读取,从而达到动态创建不同的类,调用不同的方法的目的。

7 个回复

倒序浏览
笔记不错
回复 使用道具 举报
好笔记啊
回复 使用道具 举报
干货顶一下
回复 使用道具 举报
顶顶顶顶顶顶顶顶顶顶顶
回复 使用道具 举报
  带declared返回的声明的        
回复 使用道具 举报
值得学习 赞一个
回复 使用道具 举报
可以,我都不知道反射能用在哪里
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马