没有构造函数的 Javassist Proxy-Class

Javaassist Proxy-Class without Constructor

我目前使用 Javaassist 为 class:

生成代理
ProxyFactory f = new ProxyFactory();
f.setSuperclass(JFrame.class); // Just an example.

// I would like to create a proxy for JFrame to
// fill with method implementations...
f.setHandler(handler); // ... in an own handler

Class<?> proxyClazz = f.createClass();

我的问题是:JFrame 的构造函数也被调用了。说得通。但我不想要这个。我想生成一个空的 class 作为代理,它与其他普通 JFrames 分配兼容。

有办法吗?感谢您提出所有想法和想法。

  1. 序列化

您可以创建以序列化形式表示所需 class 的字节数组并使用 ObjectInputStream.readObject.

这是可能的,但很难准备正确的数据。

  1. NativeConstructorAccessorImpl

这就是 spy 方法在 mockito 中的实现方式。

  1. Unsafe.allocateInstance

所以你准备你的代理 class 并用这些方法之一(或其他方式)实例化它。

PS: 看看 objenesis 图书馆。