我使用CGLib时遇到问题。我定义了一个MethodInterceptor,但是什么时候
我在拦截方法中调用method.getName()
我只得到toString()
方法的结果...为什么?我不明白,因为我从不直接调用toString()
方法
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
....
method.getName();
return something;
}
当我在代理对象上调用方法时,我得到了toString但是我调用了不同的方法。 每个想法都有。
--- ---- UPDATE 创建增强器:
Enhancer enhancer = new Enhancer();
enhancer.setCallback(new GetMethodsInterceptor());
enhancer.setSuperclass(Book.class);
我使用代理对象
((Book)enhancer.create()).getValue();
其中GetMethodsInterceptor()是
public class `GetMethodsInterceptor` implements MethodInterceptor {
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
return method.getName();
}
}