// 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.");
    }
}MyClass 和 AnotherClass 中都有静态块 (static {})。静态块在类被加载时执行,用于初始化类。MyClass 中使用 ClassLoader 来加载 AnotherClass。loadClass 方法只加载类但不会初始化它(即不会执行静态块),除非该类被显式使用。MyClass 时,首先会输出 MyClass is being loaded.,因为 MyClass 被加载并初始化。loadClass("AnotherClass") 加载 AnotherClass,但不会立即初始化它,所以此时不会输出 AnotherClass is being initialized.。AnotherClass 的静态成员或实例,则会触发其初始化。通过这个例子可以理解 Java 类加载机制中的类加载和类初始化的区别。
下一篇:java ascii
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站