类的加载器

有三个层次的类的加载器

Bootstrap ClassLoader(引导类加载器):最底层的类加载器。是jvm自带的类加载库,负责java平台的核心库。比如String类等等这些核心类,都由Bootstrap ClassLoader负责加载。而且无法被我们直接获取到

Extension ClassLoader(扩展类加载器)::负责jre/lib/ext目录下的jar包或 – D java.ext.dirs 指定目录下的jar包装入工作库,意思不大,就是负责加载放在指定文件夹下面的jar文件的加载器。

System ClassLoader(系统类加载器):负责java –classpath 或 –D java.class.path所指的目录下的类与jar包装入工 作 ,是最常用的加载器。自己写的代码都是由系统类加载器负责加载。

三者是一个上下继承的关系。

代码演示:

自定义Person类:

public class Person{
    private String name;
    private int age;
    
    public void eat(){
        System.out.println("吃");
    }
}

获取Person类加载器:

public class Demo{
    public static void main(String args[]){
        Person person1 = new Person();
        //获取Person类的加载器,即System加载器
        ClassLoader classLoader1 = person1.getClass.getClassLoader();
        //打印Person类加载器
        System.out.println(classLoader1);
        //获取Person类加载器的父加载器,即Extension加载器
        ClassLoader classLoader2 = classLoader1.getParent();
        //打印获取Person类加载器的父加载器
        System.out.println(classLoader2);
        //获取Bootstrap加载器
        ClassLoader classLoader3 = classLoader2.getParent();
        System.out.println(classLoader3);
        //获取Bootstrap加载器
        ClassLoader classLoader = String.class.getClassLoader();
        System.out.println(classLoader);

    }
}

执行结果:

sun.misc.Launcher$AppClassLoader@18b4aac2
sun.misc.Launcher$ExtClassLoader@1d44bcfa
null
null

出现null的原因是Bootstrap加载器无法被我们获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值