反射(待补充)
一、反射概述
二、理解Class类并获取Class的实例(重点)
三、理解类加载器Classloader
四、创建运行时类的对象
五、获取运行时类的完整结构
六、调用运行时类的指定结构
七、反射的应用:动态代理
一、反射概述:
(1)Reflect被识别为动态语言。允许程序在执行期间借助于Reflection的API获得类的欸不信息,并直接操作任意对象的属行呗。
(2)加载完一个类子之后,在方法区中产生一个Class对象(一个类对应一个Clas对象),这个类对象就包含了完整类的结构信息。可以通过这个对象看到类的结构。
(3)反射最大的作用时在运行时操作或者获取一个类的结构
二、理解Class类并获取Class的实例(重点)
1、一个Class对象对应着一个运行时类
2、获取运行hi类的构造方法,八种基本数据类型对相应得运行时类得对象直接,class。
3、getFiled和getdeclaredFiled的区别
4、不管访问什么属性,都因该在后面加上setAcessible()
5、newInstance():通过运行时类构造一个对象
三、理解类加载器Classloader
1、类加载:将字节码文件加载到内存中,并将静态数据转换成方法区内存中运行时的数据结构,然后生成一个代表这个运行时类的java.lang.Class类型的对象。作为方法区中类的数据访问入口(引用地址)。访问这个运行时类的数据只能通过Class的对象,需要类加载器参与。
2、类加载的过程
(1)加载(类加载)
(2)链接:解释将java的二进制代码合并到jvm
a.验证:确保加载类的信息符合JVM的规范,无安全方面的问题
b.准备:为类变量(static)分配内存并设置默认值,这些内存都是在方法区中完成的。
c.解析:将虚拟机常量池的常量名替换为引用(即地址)的过程
(3)初始化:执行类构造器<client>的过程