南京做微网站,重庆娱乐公司,wordpress如何自定义模块,免费微信公众号首图与那些编译时需要进行连接的语言不同#xff0c;在java语言中#xff0c;类型的 动态加载#xff1a;编写一个面向接口的应用程序#xff0c;可以等到运行时再指定其实现类。
类加载#xff1a;加载-连接-初始化-使用-卸载
一个类被调用时#xff0c;会将其class文件从…与那些编译时需要进行连接的语言不同在java语言中类型的 动态加载编写一个面向接口的应用程序可以等到运行时再指定其实现类。
类加载加载-连接-初始化-使用-卸载
一个类被调用时会将其class文件从磁盘中加载到虚拟机中。
加载
1通过一个类的全限定名来获取定义此类的二进制字节流。 2将这个流转换为方法区的静态文件结构。 3在内存中生成Class对象作为方法区的访问入口。
连接的过程
先验证class文件的安全性然后开辟类变量的空间和位置将常量池中的符号引用替换为直接引用。
初始化
初始化阶段就是执行类构造器()方法的过程。 ()是javac编译器自动生成的产物。 ()是类中的所有类变量的赋值当作和静态static块语句合并产生的按照程序顺序生成。
类加载器
根据类的全限定名获取所需要的类。 对于任意一个类都必须由加载它的类加载器和这个类本身一起确认其唯一性。对于每一个类加载器都有一个独立的类名称空间。这里的唯一性体现在equals()方法isInstance()方法。
启动类加载器加载java_home/lib目录的java核心类
扩展类加载器加载java_home/lib/ext目录下的类库
应用程序类加载器是ClassLoader.getSystemClassLoader()方法的返回值加载用户路径上的类即用户自己写的类
双亲委派如果一个类加载器加载类会先委派给启动类加载器然后是扩展类加载器发现类不在其加载路径上才会由应用类加载器加载