没有构造函数的 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 分配兼容。
有办法吗?感谢您提出所有想法和想法。
- 序列化
您可以创建以序列化形式表示所需 class 的字节数组并使用 ObjectInputStream.readObject
.
这是可能的,但很难准备正确的数据。
NativeConstructorAccessorImpl
这就是 spy
方法在 mockito
中的实现方式。
Unsafe.allocateInstance
所以你准备你的代理 class 并用这些方法之一(或其他方式)实例化它。
PS: 看看 objenesis
图书馆。
我目前使用 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 分配兼容。
有办法吗?感谢您提出所有想法和想法。
- 序列化
您可以创建以序列化形式表示所需 class 的字节数组并使用 ObjectInputStream.readObject
.
这是可能的,但很难准备正确的数据。
NativeConstructorAccessorImpl
这就是 spy
方法在 mockito
中的实现方式。
Unsafe.allocateInstance
所以你准备你的代理 class 并用这些方法之一(或其他方式)实例化它。
PS: 看看 objenesis
图书馆。