为什么Java类加载器执行;“静态”;内容,如Class.forName
我用谷歌搜索了ClassLoader和Class.forName之间的区别,大多数答案都说Class.forName将操作类的“静态”部分,而ClassLoader不会。所以我测试了这个:为什么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");
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