黑马程序员技术交流社区

标题: 动态代理的问题 [打印本页]

作者: yp324    时间: 2013-6-3 15:52
标题: 动态代理的问题
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到底是拿来干嘛的?




作者: 何俊森    时间: 2013-6-4 22:54
第一段的handler和第二段代码Subject用的一样的类加载器,都是AppClassLoader。类加载器作用是加载类到虚拟机中去运行,负责加载 Java 应用所需的资源。
作者: 袁梦希    时间: 2013-6-12 18:39
问题有些深度 {:soso_e120:}




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