class Test {
}
public class NewClass {
public static void main(String[] args) throws ClassNotFoundException {
Test t = new Test();
String s = new String("abc");
Integer i = new Integer(1000);
System.out.println(Class.forName("Test").getClassLoader());
System.out.println(t.getClass().getClassLoader());
System.out.println(NewClass.class.getClassLoader());
System.out.println(java.lang.String.class.getClassLoader());
System.out.println(java.lang.Integer.class.getClassLoader());
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
sun.misc.Launcher$AppClassLoader@546b97fd
sun.misc.Launcher$AppClassLoader@546b97fd
sun.misc.Launcher$AppClassLoader@546b97fd
null
null
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,为什么String和Integer的类加载器为null?
来自getClassLoader()的JavaDoc
返回类的类加载器.某些实现可能使用null来表示引导类加载器.如果此类由引导类加载器加载,则此方法将在此类实现中返回null.
Bootstrap类加载器负责加载Java API中定义的类.String和Integer类被Bootstrap类加载器加载.