Java类什么时候会被加载?

发布时间:2023年12月18日

在Java中,类的加载是Java程序运行时的一个重要过程,它是将类的字节码加载到Java虚拟机中的过程。Java类在以下几种情况下会被加载:

  1. 当创建类的实例:

    当通过关键字new创建类的实例时,对应的类将被加载。例如:MyClass obj = new MyClass();

  2. 当访问类的静态成员(静态字段或方法)时:

    当访问一个类的静态成员,如静态字段或静态方法时,该类会被加载。例如:int result = MyClass.staticField;MyClass.staticMethod();

  3. 当使用反射机制操作类时:

    当使用Java的反射机制,如Class.forName("className")ClassLoader.loadClass("className")等方式时,对应的类会被加载。

  4. 当虚拟机启动时主动加载的类:

    在程序启动时,Java虚拟机会通过主类(包含main方法的类)加载其他类。这是整个Java应用程序启动的初始加载。

  5. 当执行特定的字节码指令时:

    当虚拟机执行特定的字节码指令时,例如使用invokedynamic指令执行动态语言的调用,相应的类也会被加载。

  6. 当调用Class对象的方法时:

    当调用一个类的Class对象的方法时,如获取类的构造方法、字段、方法等信息时,对应的类也会被加载。

  7. 当使用JDK1.7的动态语言支持时:

    在JDK1.7及之后的版本中,引入了对动态语言的支持,当通过MethodHandle实例分派到具体的实现时,相应的类也可能被加载。

需要注意的是,类加载过程中的初始化阶段(执行类的静态初始化代码块和静态字段初始化)是在类加载过程中的最后一个阶段。这表示虽然加载了类,但不一定进行了类的初始化。只有在需要对类进行初始化时,虚拟机才会真正执行类的初始化过程。

文章来源:https://blog.csdn.net/qq_54276699/article/details/135073350
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。