反射之类加载器(1)
一、介绍
本文主要用于学习Java
四种类加载器。
二、类加载器
1、引导类加载器 (又称根据加载器)BootStrap ClassLoader
由于并不是java
语言实现的,也不是ClassLoader
的子类,获取它的对象往往返回null
System.out.println(String.class.getClassLoader());//null
2、扩展类加载器 Extension ClassLoader
负责加载jre/lib/ext
扩展库,是ClassLoader
的子类。
代码示例:
新建一个Person
类,将其导出为一个jar
包,将此jar放到jre/lib/ext
路径下,打印输出可查看其地址值。
System.out.println(Person.class.getClassLoader());
//地址值为sun.misc.Launcher$ExtClassLoader@33909752
3、应用类加载器 Application ClassLoader
负责ClassPath
路径下的类(JDK5.0
以后不需要手动生成path),是ClassLoader
的子类,用于加载自己写的文件。
System.out.println(Person.class.getClassLoader());
//地址值为sun.misc.Launcher$AppClassLoader@33929101
4、自定义类加载器
当你的程序需要加载特定的目录下的类可以自定义加载器。当程序中的字节码需要加密的时候,那么往往会提供一个自定义类的加载对其进行解码,后面会见到自定义类加载器tomcat
。