当使用框架去开发时,不需要用到反射的概念,因为被框架写好了。但是如果自己去开发框架,就需要深入理解反射的含义。
在写类的时候,里面包含了成员变量,构造方法,成员方法三部分。
类通过终端的javac命令进行编译,会把源码编译成一个字节码文件.class,里面包含了该类的成员变量,构造方法,成员方法,在硬盘上储存着,并没有进内存。
也就是说,如果只创建一个类并用javac编译这个类的话,只会停留在第一个阶段。
当你用new要创建一个实例时,.class文件就会先进入第二个阶段,然后就创建这个实例。
类加载器把字节码文件加载进内存后就进入第二阶段。此时有一个类就叫class,称为class类,通过class类创建的对象里面包含了成员变量,构造方法,成员方法等信息,通过三个数组来装。
注意class类是jvm自动创建的。
用new persom()创建一个实例。
这里会出现System类里的所有的成员方法,那为什么vscode可以知道这个类为什么有哪些方法呢?
因为在定义这个类之后jvm会生成一个class类,里面有这个类所有的方法。
当你仅仅是定义了一个类,但是还没有实例化一个对象时,只会生成一个字节码文件,储存在硬盘中。
Class.forName(“全类名”):将字节码.class文件从硬盘加载进内存。到了内存以后才可以读取。全类名就是包名加类名。
1. 获取成员变量们
2.获取构造方法们
3.获取成员方法们
4.获取类名