黑马程序员技术交流社区

标题: 学习笔记 [打印本页]

作者: 雨过~天晴    时间: 2019-6-5 17:50
标题: 学习笔记
反射:
        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,"有参传参数")




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