java反射系列三之类加载器

Posted 静心*尽力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java反射系列三之类加载器相关的知识,希望对你有一定的参考价值。

 一.概念认知

 


二.代码示例

package reflect;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ClassLoaders {
    public static void main(String[] args) throws ClassNotFoundException, IOException {
        ClassLoaders c = new ClassLoaders();
        c.test();
    }
    public void test() throws ClassNotFoundException, IOException{
        //getSystemClassLoader()返回用于委派的系统类加载器。
        ClassLoader loader1 = ClassLoader.getSystemClassLoader();
        System.out.println(loader1);
        //getParent()返回父类加载器进行委派
        ClassLoader loader2 = loader1.getParent();
        System.out.println(loader2);
        //引导类加载器无法获得
        ClassLoader loader3 = loader2.getParent();
        System.out.println(loader3);
        //getClassLoader()返回类的类加载器。 
        Class clazz1 = Person.class;
        ClassLoader loader4 = clazz1.getClassLoader();
        System.out.println(loader4);
        
        //由于Object和String是核心类,由最顶层的引导类加载器加载,故无法获得
        String className = "java.lang.Object";
        Class clazz2 = Class.forName(className);
        ClassLoader loader5 = clazz2.getClassLoader();
        System.out.println(loader5);
        
        //掌握
        //this代表这个方法,getclass就能得到所属的类,接着得到加载此类的类加载器
        ClassLoader loader = this.getClass().getClassLoader();
        //getResourceAsStream(String name)返回用于读取指定资源的输入流。
        InputStream is = loader.getResourceAsStream("reflect\\\\可坏.txt");
        Properties pros = new Properties();
        //load(InputStream inStream)从输入字节流读取属性列表(键和元素对)。 
        pros.load(is);
        //getProperty(String key)使用此属性列表中指定的键搜索属性。
        String name = pros.getProperty("user");
        System.out.println(name);
        
        String password = pros.getProperty("password");
        System.out.println(password);
    }
}

写给自己看的,方法不懂查api文档啦

以上是关于java反射系列三之类加载器的主要内容,如果未能解决你的问题,请参考以下文章

Java知识系列 -- 反射

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

Java : java基础 反射与枚举

java反射系列二

java 27 - 1 反射之 类的加载器

javaAPI_反射_类加载器