Java 创建具有无参数构造函数的代理类

Java 创建具有无参数构造函数的代理类,java,reflection,proxy,Java,Reflection,Proxy,使用java.lang.reflect.Proxy,我可以创建一个类,该类将InvocationHandler作为构造函数参数。但是,该类将通过框架中的某个地方的newInstance()实例化,并且InvocationHandler对于所有实例都可以相同 我可以在代理类中添加一个无参数构造函数,将调用处理程序传递给原始构造函数吗?我担心这样做行不通,因为实际的代理魔法发生在本机代码中 private static native Class defineClass0(ClassLoader lo

使用
java.lang.reflect.Proxy
,我可以创建一个类,该类将
InvocationHandler
作为构造函数参数。但是,该类将通过框架中的某个地方的
newInstance()
实例化,并且
InvocationHandler
对于所有实例都可以相同


我可以在代理类中添加一个无参数构造函数,将调用处理程序传递给原始构造函数吗?

我担心这样做行不通,因为实际的代理魔法发生在本机代码中

private static native Class defineClass0(ClassLoader loader, String name,
                     byte[] b, int off, int len);
只能通过静态方法
Proxy.newProxyInstance(ClassLoader,Class[],InvocationHandler)
访问。此方法依次调用由此生成的类的构造函数,并将提供的
InvocationHandler
作为参数

因此,您无法从
newInstance()
调用返回代理。最接近的方法是使用
newInstance()
实例化
InvocationHandler
,并将其传递给静态工厂方法


或者您可以更进一步,让一个类实现目标接口,通过工厂方法构造一个代理字段,并将所有接口方法委托给代理。但是,这将是一个代理的代理,我真的不明白这一点。< /P>有没有办法检查“定义代码”的本地代码?@ RAWALIAASCODER,代码将是JRE和特定于平台的,因此您需要一个疯狂的好理由来考虑更改它——而不是我选择的路由。