Java反射:如何完整实现类加载与信息获取?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2651个文字,预计阅读时间需要11分钟。
三. 类加载+1. 动态加载和静态加载+基本说明+反射机制是Java实现动态语言的关键,也是通过反射实现类动态加载1. 静态加载:编译时加载相关类,若无错误,依赖性强2. 动态加载“
三.类加载
1.动态加载和静态加载
- 基本说明
- 反射机制是java实现动态语言的关键,也就是通过反射实现类动态加载1.静态加载:编译时加载相关的类,如果没有则报错,依赖性太强2.动态加载:运行时加载需要的类,如果运行时不用该类,即使不存在该类,则不报错,降低了依赖性3.举例说明
- 类加载时机
- 1.当创建对象时(new))2.当子类被加载时3.调用类中的静态成员时4.通过反射Class.forName("com.test.Cat");
2.类加载流程图
- 类加载各阶段完成任务
3.类加载的五个阶段
3.1加载阶段
- JVM在该阶段的主要目的是将字节码从不同的数据源(可能是class文件、也可能是jar包,甚至网络)转化为二进制字节流加载到内存中,并生成一个代表该类的java.lang.Class对象
3.2连接阶段
3.2.1验证
1.目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。2.包括:文件格式验证(是否以魔数oxcafebabe开头)、元数据验证、字节码验证和符号引用验证3.可以考虑使用-Xverify:none参数来关闭大部分的类验证措施,缩短虚拟机类加载的时间。
本文共计2651个文字,预计阅读时间需要11分钟。
三. 类加载+1. 动态加载和静态加载+基本说明+反射机制是Java实现动态语言的关键,也是通过反射实现类动态加载1. 静态加载:编译时加载相关类,若无错误,依赖性强2. 动态加载“
三.类加载
1.动态加载和静态加载
- 基本说明
- 反射机制是java实现动态语言的关键,也就是通过反射实现类动态加载1.静态加载:编译时加载相关的类,如果没有则报错,依赖性太强2.动态加载:运行时加载需要的类,如果运行时不用该类,即使不存在该类,则不报错,降低了依赖性3.举例说明
- 类加载时机
- 1.当创建对象时(new))2.当子类被加载时3.调用类中的静态成员时4.通过反射Class.forName("com.test.Cat");
2.类加载流程图
- 类加载各阶段完成任务
3.类加载的五个阶段
3.1加载阶段
- JVM在该阶段的主要目的是将字节码从不同的数据源(可能是class文件、也可能是jar包,甚至网络)转化为二进制字节流加载到内存中,并生成一个代表该类的java.lang.Class对象
3.2连接阶段
3.2.1验证
1.目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。2.包括:文件格式验证(是否以魔数oxcafebabe开头)、元数据验证、字节码验证和符号引用验证3.可以考虑使用-Xverify:none参数来关闭大部分的类验证措施,缩短虚拟机类加载的时间。

