Java 类加载样式的混乱
正如我在一个线程中发现的那样,Class.forName()将始终使用调用方的类加载器,而ClassLoader.loadClass()可以指定不同的类加载器Java 类加载样式的混乱,java,Java,正如我在一个线程中发现的那样,Class.forName()将始终使用调用方的类加载器,而ClassLoader.loadClass()可以指定不同的类加载器 System.out.println(Class.forName("test.Employee").getClassLoader()); System.out.println(ClassLoader.getSystemClassLoader().loadClass("test.Employee").getClassLoader());
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
请解释原因。对于您来说没有区别,因为您当前的类是使用SystemClassLoader加载的,它恰好是
sun.misc.Launcher$AppClassLoader@7ced01
如果使用不同的类加载器加载类,在使用不同类加载器加载的类中使用时,两个类加载器将使用不同的类加载器。为什么期望结果不同?如果两种样式的类加载器不同,则应该有两个不同的对象。使用不同的类加载器加载类,并比较类对象(而不是类实例)为了平等。。你会得到你的answer@WhoAmI我的问题不是针对Employee类对象的相等性,而是针对classloader的对象。在这两种情况下?那么调用方的类加载器是什么?