黑马程序员-类加载器

来源:互联网 发布:cisco端口类型 编辑:程序博客网 时间:2024/04/30 06:27

------- android培训、java培训、期待与您交流! ----------

简要介绍什么是类加载器和类加载器的作用

程序用到某个类,把那个类的二进制码加载进来,谁去加他,就是类加载器去加他
Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap(java虚拟机已启动,他就在里面了),ExtClassLoader,AppClassLoader类加载器也是Java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是不是java类,这正是BootStrap。Java虚拟机中的所有类装载器采用具有父子关系的树形结构进行组织,在实例化每个类装载器对象时,需要为其指定一个父级类装载器对象或者默认采用系统类装载器为其父级类加载。
类加载器之间的父子关系和管辖范围图

练习代码

package cn.itcast.day2;public class ClassLoaderTest {public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {//类加载器getClassLoader()是一个对象,也属于某个class   getClass()得到类加载器的类//System.out.println(ClassLoaderTest.class.getClassLoader().getClass().getName());//BootStrap类加载器 不是java类对象,是嵌套在java类虚拟机里面的//System.out.println(System.class.getClassLoader());//返回结果为nullClassLoader loader =ClassLoaderTest.class.getClassLoader();while(loader!=null){System.out.println(loader.getClass().getName());//获得类加载器的父加载器loader=loader.getParent();}////Class d1=new MyClassLoader("itcastlib").loadClass("ClassLoaderAttachment");//d1.newInstance();}}



原创粉丝点击