类加载器

标签:自定义   not   class   实现   bsp   exception   pat   public   throws   

一、类加载器的类型

1、Bootstrap类加载器

  最顶层的类加载器,它是由C++编写,主要负责JVM的核心类库的加载,例如java.lang包。

2、扩展类加载器

  第二层类加载器,父加载器当然就是bootstrap,主要是加载jre\lb\ext子目录里面的类库。

3、系统类加载器

  第三层类加载,父加载器是扩展类加载器,主要负责加载classpath下的类库。

4、自定义类加载器

  父加载器默认是系统类加载器。而需要实现自己的类加载器,需要继承ClassLoad抽象类。

 1 public class MyClassLoader extends ClassLoader{    
 2 @Override    
 3 protected Class<?> findClass(String name) throws ClassNotFoundException{   
 4  //从磁盘中读取class的二进制数据        
 5 byte[] classBytes = this.readClassBytes(name);        
 6 //如果数据为null则抛出ClassNotFoundException异常        
 7 if (null == classBytes || classBytes.length == 0) {           
 8  throw new ClassNotFoundException();       
 9 }       
10  //调用defineClass方法定义class        
11 return this.defineClass(name, classBytes, 0, classBytes.length);    
12 }   
13  

 

类加载器

标签:自定义   not   class   实现   bsp   exception   pat   public   throws   

原文地址:https://www.cnblogs.com/huangwenhao1024/p/14232301.html

版权声明:完美者 发表于 2021-01-07 12:03:27。
转载请注明:类加载器 | 完美导航

暂无评论

暂无评论...