编写代码,展示如何获取当前类加载器及其所有父加载器。
在Java中,我们可以通过以下代码来输出当前类的类加载器,以及其所有的父类加载器:
public class Test {
public static void main(String[] args) {
ClassLoader loader = Test.class.getClassLoader();
while (loader != null) {
System.out.println(loader.toString());
loader = loader.getParent();
}
}
}
在这段代码中,我们首先获取了当前类Test的类加载器,然后通过一个循环,不断地获取并输出当前类加载器的父类加载器,直到没有父类加载器为止。
这段代码的输出可能类似于:
sun.misc.LauncherAppClassLoader@18b4aac2
sun.misc.LauncherExtClassLoader@6f94fa3e
这表示Test类是由AppClassLoader加载的,AppClassLoader的父类加载器是ExtClassLoader。而ExtClassLoader的父类加载器是引导类加载器(Bootstrap ClassLoader),但是引导类加载器在Java中获取不到,所以最终的输出没有引导类加载器。