🍿例子1:使用系统类加载器加载类
🎉例子2:使用自定义类加载器加载类
🎉例子3:使用自定义类加载器加载jar包中的类
🎉例子4:使用线程上下文类加载器加载类
例子1:使用系统类加载器加载类
public class Main {
public static void main(String[] args) {
ClassLoader loader = Main.class.getClassLoader();
System.out.println("ClassLoader: " + loader);
System.out.println("Parent ClassLoader: " + loader.getParent());
System.out.println("GrandParent ClassLoader: " + loader.getParent().getParent());
}
}
输出结果:
ClassLoader: sun.misc.Launcher$AppClassLoader@73d16e93
Parent ClassLoader: sun.misc.Launcher$ExtClassLoader@15db9742
GrandParent ClassLoader: null
解释:
在这个例子中,我们使用系统类加载器加载了Main类,并通过getClassLoader()
方法获取了该类的类加载器。然后,我们分别输出了该类加载器、其父类加载器和祖父类加载器。可以看到,Main类的类加载器是系统类加载器,其父类加载器是扩展类加载器,而扩展类加载器的父类加载器是启动类加载器,也就是整个类加载器层次结构的根加载器。