ClassLoader详解(史上最全)

1.类的加载过程

ClassLoader详解(史上最全)_第1张图片

2.类的加载器的作用

ClassLoader详解(史上最全)_第2张图片
3.类的加载器的分类
ClassLoader详解(史上最全)_第3张图片

4.Java类编译、运行的执行的流程
ClassLoader详解(史上最全)_第4张图片

5.使用Classloader加载src目录下的配置文件

@Test
    public void test2() throws Exception {

        Properties pros =  new Properties();
        //此时的文件默认在当前的module下。
        //读取配置文件的方式一:
//        FileInputStream fis = new FileInputStream("jdbc.properties");
//        FileInputStream fis = new FileInputStream("src\\jdbc1.properties");
//        pros.load(fis);

        //读取配置文件的方式二:使用ClassLoader
        //配置文件默认识别为:当前module的src下
        ClassLoader classLoader = ClassLoaderTest.class.getClassLoader();
        InputStream is = classLoader.getResourceAsStream("jdbc1.properties");
        pros.load(is);

        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        System.out.println("user = " + user + ",password = " + password);
    }

6.获取各个类的类的加载器

@Test
public void test03(){
    //对于自定义类,使用系统类加载器进行加载
    ClassLoader classLoader = TestReflection.class.getClassLoader();
    System.out.println("classLoader = " + classLoader);
    //调用系统类加载器的getParent():获取扩展类加载器
    ClassLoader classloader02 = classLoader.getParent();
    System.out.println("classloader02 = " + classloader02);
    //调用扩展类加载器的getParent():无法获取引导类加载器
    //引导类加载器主要负责加载java的核心类库,无法加载自定义类的。
    ClassLoader classloader03 = classloader02.getParent();
    System.out.println("classloader03 = " + classloader03);
}

你可能感兴趣的:(java反射机制,java)