1、获取到系统类加载器、扩展类加载器、引导类加载器代码:
package com.cad.JvmTest;
import com.cad.ReflectionCase.ClassLoaderCase.ClassLoaderTest;
public class obj5 {
public static void main(String[] args) {
// 获取系统类加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
System.out.println(systemClassLoader);
// 获取其上层:扩展类加载器
ClassLoader extClassLoader = systemClassLoader.getParent();
System.out.println(extClassLoader);
// 获取其上层:获取不到引导类加载器
ClassLoader bootstrapClassLoader = extClassLoader.getParent();
System.out.println(bootstrapClassLoader); //null
// 对于用户自定义类来说:默认使用系统类加载器
ClassLoader classLoader = ClassLoaderTest.class.getClassLoader(); // 获取类加载器
System.out.println(classLoader);
// 获取String类加载器:默认使用引导类加载器
ClassLoader classLoader1 = String.class.getClassLoader();
System.out.println(classLoader1);
}
}
2、获取到类的加载器代码的方式:
package com.cad.JvmTest;
import java.sql.DriverManager;
public class obj7 {
public static void main(String[] args) {
try {
// 当前类String的加载器
ClassLoader classLoader = Class.forName("java.lang.String").getClassLoader();
System.out.println(classLoader);
// 当前线程的上下文的加载器
ClassLoader classLoader1 = Thread.currentThread().getContextClassLoader();
System.out.println(classLoader1);
// 获取系统类加载器
ClassLoader classLoader2 = ClassLoader.getSystemClassLoader();
System.out.println(classLoader2);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}