我正在使用 javassist 创建代理ProxyFactory
。创建单个代理时一切正常。
但是,当我将代理对象传递给代理机制时,它会失败
javassist.bytecode.DuplicateMemberException:重复方法:com.mypackage.Bean_$$_javassist_0_$$_javassist_1 中的 setHandler
我正在用这个创建代理:
public Object createProxiedInstance(Object originalInstance) throws Exception {
Class<?> originalClass = instance.getClass();
ProxyFactory factory = new ProxyFactory();
factory.setSuperclass(originalClass);
factory.setHandler(new MethodHandler() {..});
Class<T> proxyClass = factory.createClass();
return proxyClass.newInstance();
}
那么,如何创建代理的代理?
更新:实际问题是每个代理都实现了ProxyObject
which definedsetHandler(..)
方法。所以第二个代理正在尝试重新定义该方法,而不是在子类中覆盖它。