反射(待补充)

一、反射概述

二、理解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>的过程

原文地址:https://www.cnblogs.com/JQbiu/p/11248190.html