Java学习笔记(反射+枚举类)
19 反射
19.1 类的加载概述和加载时机
19.1.1 类的加载概述
当程序要使用某个类时,如果该类还未加载到内存中,则系统会通过加载、连接、初始化三步来实现对这个类进行初始化。
-
加载: 指将class文件读入内存中,并为之创建一个Class对象,任何类被使用时系统都会建立一个Class对象。 连接: 验证:是否有正确的内部结构,并和其他类协调一致 准备:负责为类的静态成员分配内存,并设置默认初始化值 解析:将类的二进制数据中的符号引用替换为直接引用 初始化:即初始化步骤。
19.1.2 加载时机
-
创建类的实例 访问类的静态变量,或者为静态变量赋值 调用类的静态方法 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 初始化某个类的子类 直接使用java.exe命令来运行某个主类。
19.2 类加载器的概述和分类
19.2.1 类加载器的概述
-
负责将.class文件加载到内存中,并为之生成对应的Class对象。虽然我们并不关心类加载机制,但是了解这个机制可以更好理解程序运行。
19.2.2 类加载器的分类
-
Bootstrap ClassLoader 根类加载器 Extension Class