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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qq1455473334 初级黑马   /  2019-6-5 18:35  /  639 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


反射:
        1.反射其实操作的就是class 字节码文件,通过对class字节码文件的操作来完成动态操作的效果
        2.操作反射
                1.获得class字节码对象,在内存之中有且只有一份
                2.获得字节码对象的三种方式
                        2.1 类.class
                        2.2 对象.getClass
                        2.3 Class.forname(类的全路径)
                3.通过反射获得构造方法
                        3.1 getConstructor()
                        3.2 getConstructors()
                        3.3 getDeclaredConstructor();
                        3.4 getDeclaredConstructors();
                        
                        如果是带Declared,获得所有包含私有的构造放阿飞
                        如果是不带:获得是 public 修饰
                        
                        如果带s:是获得所有的在Declared
                        如果不带s: 是获得指定的某一个构造方法
                                        如:Constructor c= getConstructor(String.class)  就會去调用一个含String的构造方法
                                                c.newInstance();
                        如果调用的是无参构造方法:
                               clazz.newInstance()
                4.Filed
                        4.1 getFiled()
                        4.2 getFileds()
                        4.3 getDeclaredFiled()
                        4.4 getDeclaredFileds()
                                        比如:  Field addressField = c.getField("address");
                                                        addressField.set(obj,"西安");
                                        扩展方法:
                                                        getType: 返回的是 类型的class--> getType().getSimpleName();
                                                        getName:是获得字段名
                5.Method
                        4.1 getMethod()
                        4.2 getMethods()
                        4.3 getDeclaredMethod()
                        4.4 getDeclaredMethods()
                                        比如: Method method = getMethod(方法名,该方法的参数.class)
                                                   method.invoke(obj,"有参传参数")

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马