标签:
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();
标签:
原文地址:http://www.cnblogs.com/tolvgx/p/4345620.html