类加载器分类public class StackStruTest { public static void main(String[] args) { // 对用户自定义个类来说:默认使用系统类加载器进行加载-----AppClassLoader ClassLoader classLoader = StackStruTest.class.getClassLoader(); System.out.println(classLoader); // 获取其上层:扩展类加载器 -------ExtClassLoader ClassLoader extClassLoader = classLoader.getParent(); System.out.println(extClassLoader); // 获取其上层:获取不到引导类加载器---bootStrapClassLoader ----- 但是获取不到的所以是null ClassLoader bootstrap = extClassLoader.getParent(); System.out.println(bootstrap); // 么的了,所以会报错 ClassLoader --- = bootstrap.getParent(); System.out.println(---); } }
虚拟机自带的加载器Bootstrap ClassLoader 启动类加载器
扩展类加载器 Extension ClassLoader
应用程序类加载器 AppClassLoader
用户自定义加载器
ClassLoader抽象类 getParent():返回该类的超类加载器 loadClass(String name):查找name的类,返回结果为Java.lang.class类的实例 findClass(String name):查找name的类,返回结果为java.lang.class类的实例 findLoadedCLass(String name):查找name的已经被加载过的类,返回结果为Java.lang.class类的实例 defineClass(String name, byte[]b, int off, int len):把字节数组b中的内容转换为一个Java类,返回结果为Java.lang.Class类的实例 resolveClass(Class<?>c),连接指定的java类
获取当前的ClassLoader途径class.getClassLoader() Threa.currentThread().getContextClassLoader() ClassLoader.getSystemClassLoader() DriveManager.getCallerClassLoader() 来源:https://www./content-4-699551.html |
|