VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • 设计模式(1-4)-动态代理(ProxyGenerator)

前面讲的都是一些代理类生成的一些准备工作,本节讲讲代理类如何生成出来的一个过程。
java.lang.reflect.Proxy.ProxyClassFactory#apply

        @Override
        public Class<?> apply(ClassLoader loader, Class<?>[] interfaces) {
          ...
       
           byte[] proxyClassFile = ProxyGenerator.generateProxyClass(
                proxyName, interfaces, accessFlags);
          ...
        }

sun.misc.ProxyGenerator#generateProxyClass(java.lang.String, java.lang.Class<?>[], int)

    public static byte[] generateProxyClass(final String name,
                                            Class<?>[] interfaces,
                                            int accessFlags)
    {
        ProxyGenerator gen = new ProxyGenerator(name, interfaces, accessFlags);
        
        // !!!! 生成代理类的字节码文件
        final byte[] classFile = gen.generateClassFile();
        
        // 保存代理类的class文件