【发布时间】:2018-12-01 14:07:52
【问题描述】:
我搜索了 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 为何以及何时执行“静态”部分?如果它也执行“静态”,那么这两者的核心区别是什么?
非常感谢。
【问题讨论】: