【发布时间】:2014-05-03 22:33:35
【问题描述】:
我正在使用 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,它定义了setHandler(..) 方法。所以第二个代理正在尝试重新定义方法,而不是在子类中覆盖它。
【问题讨论】:
-
顺便说一句,这似乎是关于 javassist 的第一个问题。我很惊讶。