类加载器(ClassLoader)

1.系统默认三个类加载器,每个加载器是负责加载特定位置的类,本身也要被类加载器BootStrap加载
    BootStrap  ExtClassLoader  AppClassLoader

2.Java虚拟机中所有类加载器采用具有父子关系的树形结构进行组织,在实例化每隔类加载器对象时,
    需要为其指定一个父级类加载器对象或者默认采用类加载器为其父级加载器。
    类加载器之间的父子关系和管辖范围图。

    BootStrap--------JRE/lib/rt.jar

    ExtClassLoader----->JRE/lib/ext/*.jar

    AppClassLoader----->CLASSPATH指定的所有jar或目录

    MyClassLoader------>我们创建的类加载器目录(需要继承ClassLoader)

3.类加载器的委托机制
    每个类加载器加载类时,先委托给其上级类加载器。
    面试题:能不能自己写一个类叫javalanguage.system?
    答案:写了也不会加载。

4.编写类加载器
    实例:对class文件进行加密的工具类
5.管理资源和配置文件
    注意:ClassLoader只能读取到类路径下的文件

    1.使用类加载器获取输入流
    //1.1获取当前类的加载器
    ClassLoader cl = 类.class.getClassLoader();
    //1.2使用cl获取文件输入流
    InputStream in = cl.getResourceAsStream("/b.properties");

    2.使用类加载器获取文件的路径。
    //2.1获取当前类加载器
    ClassLoader cl = 类.class.getClassLoader();
    //2.2使用类加载器获取文件的URL
    URL url = cl.getResource("/com/itheima/servlet/c.properties");
    //2.3获取url的路径
    String path = url.getPath();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值