为什么Java类加载器执行;“静态”;内容,如Class.forName

为什么Java类加载器执行;“静态”;内容,如Class.forName,java,class,static,loader,Java,Class,Static,Loader,我用谷歌搜索了ClassLoader和Class.forName之间的区别,大多数答案都说Class.forName将操作类的“静态”部分,而ClassLoader不会。所以我测试了这个: public static void main(String[] args) { try { ClassLoader l = ClassLoader.getSystemClassLoader(); Class c2 = l.loadClass("C");

我用谷歌搜索了ClassLoader和Class.forName之间的区别,大多数答案都说Class.forName将操作类的“静态”部分,而ClassLoader不会。所以我测试了这个:

public static void main(String[] args) {
    try {
        ClassLoader l = ClassLoader.getSystemClassLoader();
        Class c2 = l.loadClass("C");
        Constructor ctor2 = c2.getConstructor();
        C obj2 = (C) ctor2.newInstance();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
它打印:

static
default ctor
好吧,这不是我所期望的,无论如何,ClassLoader为什么以及何时执行“静态”部分?如果它也执行“静态”,那么这两个命令之间的核心区别是什么

非常感谢。

代码>l.loadClass(“C”)导致执行静态初始值设定项,同时创建实例

您可以删除以下代码并重试:

Constructor ctor2 = c2.getConstructor();
C obj2 = (C) ctor2.ne
l.loadClass(“C”)导致执行静态初始值设定项,同时创建实例

您可以删除以下代码并重试:

Constructor ctor2 = c2.getConstructor();
C obj2 = (C) ctor2.ne