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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yp324 中级黑马   /  2013-6-3 15:52  /  1341 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Subject是一个接口:
interface Subject{}代码段一:
public static void main(String []args){
        RealSubject realSub = new RealSubject();
        InvocationHandler handler = new DynamicSubject(realSub);
        Subject sub = (Subject)Proxy.newProxyInstance(
                        handler.getClass.getClassLoader(),
                        realSub.getClass().getInterfaces(),
                        handler);
}

代码段二:
public static void main(String []args){
        RealSubject realSub = new RealSubject();
        InvocationHandler handler = new DynamicSubject(realSub);
        Subject sub = (Subject)Proxy.newProxyInstance(
                        Subject.class.getClassLoader(),
                        realSub.getClass().getInterfaces(),
                        handler);
}
经过测试两端代码执行结果都是一样的,问题就是第一段的ClassLoader是来自于handler.getClass.getClassLoader();而第二段代码的ClassLoader是来自于Subject.class.getClassLoader().
请问这两个有什么区别吗?那个ClassLoader到底是拿来干嘛的?



评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
第一段的handler和第二段代码Subject用的一样的类加载器,都是AppClassLoader。类加载器作用是加载类到虚拟机中去运行,负责加载 Java 应用所需的资源。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
问题有些深度 {:soso_e120:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马