Class.forName()将始终使用调用者的ClassLoader,而ClassLoader.loadClass()可以指定其他ClassLoader。我相信Class.forName也会初始化加载的类,而ClassLoader.loadClass()方法不会立即执行此操作(除非是首次使用,否则不会初始化)。
在寻找以确认我的初始化行为摘要时才发现本文。您似乎正在寻找其中的大部分信息:
http://www.javaworld.com/javaworld/javaqa/2003-03/01-qa-0314-forname.html
这种用法很酷,尽管我以前从未使用过:
Class.forName(String, boolean, ClassLoader)
它允许您指定ClassLoader,并且boolean参数定义在加载类时是否应初始化该类。



