content: package com.alibaba.json.bvt.bug;
  
  import java.lang.reflect.Type;
  
  import junit.framework.TestCase;
  
  import org.junit.Test;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.TypeReference;
  import com.alibaba.fastjson.parser.ParserConfig;
  import com.alibaba.fastjson.util.TypeUtils;
  
  public class Issue96 extends TestCase {
  
      public void test_for_issue() throws Exception {
          Page<Sub> page = new Page<Sub>(new Sub(1));
          Type type = new TypeReference<Page<Sub>>() {
          }.getType();
          // this is ok
          Page<Sub> page1 = JSON.parseObject(JSON.toJSONString(page), type);
          System.out.println(page1.sub.getClass());
      }
  
      public void xx_testCast() {
          Page<Sub> page = new Page<Sub>(new Sub(1));
          Type type = new TypeReference<Page<Sub>>() {
          }.getType();
          ParserConfig parserconfig = ParserConfig.getGlobalInstance();
          // !!!! this will fail:
          // !!!! com.alibaba.fastjson.JSONException: can not cast to : Page<Sub> TypeUtils.java:719
          Page<Sub> page1 = TypeUtils.cast(page, type, parserconfig);
          System.out.println(page1.sub.getClass());
      }
  
      static class Page<T> {
  
          public Page(){
              super();
          }
  
          public Page(T sub){
              super();
              this.sub = sub;
          }
  
          T sub;
  
          public T getSub() {
              return sub;
          }
  
          public void setSub(T sub) {
              this.sub = sub;
          }
      }
  
      static class Sub {
  
          public Sub(){
              super();
          }
  
          public Sub(int id){
              super();
              this.id = id;
          }
  
          int id;
  
          public int getId() {
              return id;
          }
  
          public void setId(int id) {
              this.id = id;
          }
      }
  }
  