如何像在 jmockit 中那样用 java 代理模拟静态调用?

How static calls are mocked with java agent like in jmockit?

我开始知道 Jmockit 不使用自定义 class 加载器来模拟静态调用,而是使用 java 代理。

我知道可以通过自定义 class 加载器来完成。谁能解释一下 java 代理如何在高级别帮助这里?

我相信 java 代理必须拦截调用和调用存根而不是原始实现。
但是 java 代理如何像通常由代理所做的那样帮助拦截?

据我所知,使用 Java 代理,您可以在加载 class 对象时对其进行操作。所以 JMockit 可以将任何东西插入到它想要的 class 中。或需求。

在这里您可以找到一个教程,其中介绍了 Java 代理以及如何创建代理:http://www.javabeat.net/introduction-to-java-agents/

java 代理提供重新定义在 运行 时加载的 class 内容的功能。

所以它在 运行 时间

用存根实现替换了实际的静态方法