15-3 反射 ---- 类的加载 与ClassLoader的理解(2)ClassLoader

15-2 反射 ---- 类的加载 与ClassLoader的理解(2)ClassLoader

一、了解:ClassLoader
类加载器作用是用来把类(class)装载进内存的。 JVM 规范定义了如下类型的类的加载器。
在这里插入图片描述
二、加载器获取
1.获取一个系统类加载器
• ClassLoader classloader = ClassLoader.getSystemClassLoader();
• System.out.println(classloader);

2.获取系统类加载器的父类加载器,即扩展类加载器
• classloader = classloader.getParent();
• System.out.println(classloader);

3.获取扩展类加载器的父类加载器,即引导类加载器
• classloader = classloader.getParent();
• System.out.println(classloader);

4.测试当前类由哪个类加载器进行加载
• classloader = Class.forName(“exer2.ClassloaderDemo”).getClassLoader();
• System.out.println(classloader);

5.测试JDK提供的Object类由哪个类加载器加载
• classloader =
• Class.forName(“java.lang.Object”).getClassLoader();
• System.out.println(classloader);

6.关于类加载器的一个主要方法:getResourceAsStream(String str):获取类路径下的指定文件的输入流
• InputStream in = null;
• in = this.getClass().getClassLoader().getResourceAsStream(“exer2\test.properties”);
• System.out.println(in);

代码:

package java1;

import org.junit.Test;

//了解类的加载器
public class ClassLoaderTest {

    @Test
    public void test1(){
        //对于自定义类吗,使用系统类加载器进行加载
        ClassLoader classLoador = ClassLoaderTest.class.getClassLoader();
        System.out.println(classLoador);

        //调用系统类加载的getParent():获取扩展类加载器
        ClassLoader classLoador1 = classLoador.getParent();
        System.out.println(classLoador1);

        //调用扩展类加载的getParent():获取引导类加载器
        //引导加载器主要负责加载java的核心类库,无法加载自定义类的
        ClassLoader classLoador2 = classLoador1.getParent();
        System.out.println(classLoador2);

        ClassLoader classLoader3 = String.class.getClassLoader();
        System.out.println(classLoader3);

    }


}

输出:

sun.misc.Launcher$AppClassLoader@18b4aac2
sun.misc.Launcher$ExtClassLoader@452b3a41
null
null
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值