Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java类加载

作者:诸神之翼   发布日期:2025-04-17   浏览:118

// Java类加载示例代码

// 定义一个简单的类
public class MyClass {
    static {
        System.out.println("MyClass is being loaded.");
    }

    public static void main(String[] args) {
        // 加载并初始化另一个类
        ClassLoader classLoader = MyClass.class.getClassLoader();
        try {
            Class<?> clazz = classLoader.loadClass("AnotherClass");
            System.out.println("AnotherClass has been loaded but not initialized yet.");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

// 定义另一个类
class AnotherClass {
    static {
        System.out.println("AnotherClass is being initialized.");
    }
}

解释说明:

  1. 静态块MyClassAnotherClass 中都有静态块 (static {})。静态块在类被加载时执行,用于初始化类。
  2. 类加载器MyClass 中使用 ClassLoader 来加载 AnotherClassloadClass 方法只加载类但不会初始化它(即不会执行静态块),除非该类被显式使用。
  3. 输出顺序
    • 当运行 MyClass 时,首先会输出 MyClass is being loaded.,因为 MyClass 被加载并初始化。
    • 接着调用 loadClass("AnotherClass") 加载 AnotherClass,但不会立即初始化它,所以此时不会输出 AnotherClass is being initialized.
    • 如果后续代码中显式使用了 AnotherClass 的静态成员或实例,则会触发其初始化。

通过这个例子可以理解 Java 类加载机制中的类加载和类初始化的区别。

上一篇:java try catch finally

下一篇:java string去除指定字符串

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站