正如我在一个线程Java: Difference between Class.forName and ClassLoader.loadClass中发现的那样, Class.forName()将始终使用调用者的ClassLoader,而ClassLoader.loadClass()可以指定不同的ClassLoader
System.out.println(Class.forName("test.Employee").getClassLoader());
System.out.println(ClassLoader.getSystemClassLoader().loadClass("test.Employee").getClassLoader());
但是上面两行正在打印相同的结果
sun.misc.Launcher$AppClassLoader@7ced01
sun.misc.Launcher$AppClassLoader@7ced01
请解释原因。
答案 0 :(得分:0)
您使用SystemClassLoader({1}}加载当前类时没有任何区别。
如果您使用不同的类加载器来加载一个类,那么当您在使用不同类加载器加载的类中使用时,这两个aproaches将使用不同的类加载器。