Java类什么时候会被加载?
2023-12-19 00:54:11
在Java中,类的加载是Java程序运行时的一个重要过程,它是将类的字节码加载到Java虚拟机中的过程。Java类在以下几种情况下会被加载:
-
当创建类的实例:
当通过关键字
new
创建类的实例时,对应的类将被加载。例如:MyClass obj = new MyClass();
-
当访问类的静态成员(静态字段或方法)时:
当访问一个类的静态成员,如静态字段或静态方法时,该类会被加载。例如:
int result = MyClass.staticField;
或MyClass.staticMethod();
-
当使用反射机制操作类时:
当使用Java的反射机制,如
Class.forName("className")
、ClassLoader.loadClass("className")
等方式时,对应的类会被加载。 -
当虚拟机启动时主动加载的类:
在程序启动时,Java虚拟机会通过主类(包含
main
方法的类)加载其他类。这是整个Java应用程序启动的初始加载。 -
当执行特定的字节码指令时:
当虚拟机执行特定的字节码指令时,例如使用
invokedynamic
指令执行动态语言的调用,相应的类也会被加载。 -
当调用Class对象的方法时:
当调用一个类的
Class
对象的方法时,如获取类的构造方法、字段、方法等信息时,对应的类也会被加载。 -
当使用JDK1.7的动态语言支持时:
在JDK1.7及之后的版本中,引入了对动态语言的支持,当通过
MethodHandle
实例分派到具体的实现时,相应的类也可能被加载。
需要注意的是,类加载过程中的初始化阶段(执行类的静态初始化代码块和静态字段初始化)是在类加载过程中的最后一个阶段。这表示虽然加载了类,但不一定进行了类的初始化。只有在需要对类进行初始化时,虚拟机才会真正执行类的初始化过程。
文章来源:https://blog.csdn.net/qq_54276699/article/details/135073350
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!