A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dolphin 中级黑马   /  2013-11-14 22:47  /  971 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对自定义的类加载器,定义后怎么用,怎么测试,看过视频,但是老师最后讲的有点乱,理不清,希望看懂的人给说一下!

4 个回复

倒序浏览
本帖最后由 阿里策 于 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);
复制代码
回复 使用道具 举报
阿里策 发表于 2013-11-15 19:52
自定义类加载器,肯定是复写了findClass方法了。在这里,肯定就已经定义好了你自己自定义的类加载器要 ...

定义自己的类加载器的时候,要重写findClass,然后用的时候是先用loadClass把它导进来,是这个意思吗?
回复 使用道具 举报
dolphin 发表于 2013-11-17 10:27
定义自己的类加载器的时候,要重写findClass,然后用的时候是先用loadClass把它导进来,是这个意思吗? ...

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

good,3KS!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马