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反射系列三之类加载器的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段