黑马程序员技术交流社区

标题: 类加载器的疑问 [打印本页]

作者: dolphin    时间: 2013-11-14 22:47
标题: 类加载器的疑问
对自定义的类加载器,定义后怎么用,怎么测试,看过视频,但是老师最后讲的有点乱,理不清,希望看懂的人给说一下!

作者: 阿里策    时间: 2013-11-15 19:52
本帖最后由 阿里策 于 2013-11-15 19:54 编辑

    自定义类加载器,肯定是复写了findClass方法了。在这里,肯定就已经定义好了你自己自定义的类加载器要加载哪个文件夹中的文件。
    调用:在一个测试类中创建一个自定义类加载器的对象,然后调用它的loadClass(String name)方法(参数是要加载的类的名字),这样能获得自定义类加载器加载的类的class文件,再调用该class文件的newInstance方法就能获得加载的类的实例对象了。代码示例:
  1. Class clazz = new MyClassLoader("Myloader").loadClass("DataFile");//MyClassLoader是自定义类加载器
  2. Date d = (Date)clazz.newInstance();//这里不能使用DataFile类来转型,这是因为,一用到DataFile类JVM就会加载它,未 System.out.println(d);
复制代码

作者: dolphin    时间: 2013-11-17 10:27
阿里策 发表于 2013-11-15 19:52
自定义类加载器,肯定是复写了findClass方法了。在这里,肯定就已经定义好了你自己自定义的类加载器要 ...

定义自己的类加载器的时候,要重写findClass,然后用的时候是先用loadClass把它导进来,是这个意思吗?
作者: 阿里策    时间: 2013-11-17 13:58
dolphin 发表于 2013-11-17 10:27
定义自己的类加载器的时候,要重写findClass,然后用的时候是先用loadClass把它导进来,是这个意思吗? ...

是滴,因为这个loadClass方法会首先找父类加载器,父类找不到再回来调用自己的findClass方法。所以还要注意一点,自定义的父类加载器要加载的目录中不要有自定义类加载器要加载的类。
作者: dolphin    时间: 2013-11-17 17:25
阿里策 发表于 2013-11-17 13:58
是滴,因为这个loadClass方法会首先找父类加载器,父类找不到再回来调用自己的findClass方法。所以还要注 ...

good,3KS!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2