代码之家  ›  专栏  ›  技术社区  ›  James Ward

Java的动态代理是如何工作的?

  •  10
  • James Ward  · 技术社区  · 16 年前

    我了解如何在Java中使用动态代理,但我不理解VM实际上是如何创建动态代理的。它是否生成字节码并加载它?或者别的什么?谢谢。

    2 回复  |  直到 8 年前
        1
  •  12
  •   Michael Borgwardt    16 年前

    至少对于Sun的实现,如果您查看 java.lang.reflect.Proxy 您将看到,是的,它动态地生成字节代码(使用类 sun.misc.ProxyGenerator )

        2
  •  5
  •   Tokuhiro Matsuno    8 年前

    我建议你读 Dynamic Proxy Classes :

    proxy.getproxyClass方法返回 代理的java.lang.class对象 类给定了类加载器和 接口数组。代理类 将在指定的类中定义 并将执行所有 提供的接口。如果代理类 对于相同的接口排列 已经在类中定义 加载程序,然后是现有代理类 将被退回; 否则,代理 这些接口的类将是 动态生成并在中定义 类加载器。 [强调矿井]