javassist异常

javassist异常,java,javassist,dynamic-proxy,Java,Javassist,Dynamic Proxy,如果我打开注释块,上面的代码运行良好。但若像上面这样运行,它将抛出异常,即java.lang.StackOverflowerError。我不知道为什么,谁能给我解释一下?非常感谢。电话o.setNamevincen;正在导致递归,换句话说,setName方法正在由其处理程序调用。把那条线去掉 public class PracticeJavassist2 { @Test public void test2() throws InstantiationException, Ille

如果我打开注释块,上面的代码运行良好。但若像上面这样运行,它将抛出异常,即java.lang.StackOverflowerError。我不知道为什么,谁能给我解释一下?非常感谢。

电话o.setNamevincen;正在导致递归,换句话说,setName方法正在由其处理程序调用。把那条线去掉

public class PracticeJavassist2 {
    @Test
    public void test2() throws InstantiationException, IllegalAccessException{
        ProxyFactory factory = new ProxyFactory();
        factory.setSuperclass(JavassistClass.class);
//      factory.setFilter(new MethodFilter() {
//          public boolean isHandled(Method arg0) {
//            if(arg0.getName().equals("getName")){
//                  return true;
//        }
//        return false;
//          }
//      });

        Class<?> c = factory.createClass();
        JavassistClass jc = (JavassistClass)c.newInstance();
        ((Proxy)jc).setHandler(new MethodHandler() {
        public Object invoke(Object arg0, Method arg1, Method arg2, Object[] arg3)throws Throwable {
            JavassistClass o = (JavassistClass)arg0;
          o.setName("vincen");
          System.out.println(o.getClass().getName());
          return arg2.invoke(arg0, arg3);
        }
  });
    System.out.println(jc.getName());

    }

}

class JavassistClass{
    private String name = "default";
    public JavassistClass(){
        name = "me";
    }
      public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}