content: package com.alibaba.json.bvt.serializer;
  
  import java.lang.reflect.Method;
  
  import javassist.util.proxy.MethodHandler;
  import javassist.util.proxy.ProxyFactory;
  import javassist.util.proxy.ProxyObject;
  import junit.framework.TestCase;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  
  public class ProxyTest extends TestCase {
  
      public void test_0() throws Exception {
          A a = create(A.class);
          a.setId(123);
  
          Assert.assertEquals("{\"id\":123}", JSON.toJSONString(a));
      }
  
      public static <T> T create(Class<T> classs) throws Exception {
          ProxyFactory factory = new ProxyFactory();
          factory.setSuperclass(classs);
          Class clazz = factory.createClass();
          MethodHandler handler = new MethodHandler() {
  
              public Object invoke(Object self, Method overridden, Method forwarder, Object[] args) throws Throwable {
                  return forwarder.invoke(self, args);
              }
          };
          Object instance = clazz.newInstance();
          ((ProxyObject) instance).setHandler(handler);
          return (T) instance;
      }
  
      public static class A {
  
          private int id;
  
          public int getId() {
              return id;
          }
  
          public void setId(int id) {
              this.id = id;
          }
  
      }
  
  }
  