仍在调用methode中调用toString

时间:2016-02-29 23:27:30

标签: java reflection proxy cglib

我使用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();
    }
}

0 个答案:

没有答案