content: package com.alibaba.json.bvt.bug;
  
  import junit.framework.TestCase;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.serializer.SerializerFeature;
  
  public class Bug_for_SpitFire extends TestCase {
  
      public void test_for_spitFire() throws Exception {
          GenericDTO<MyDTO> object = new GenericDTO<MyDTO>();
          object.setFiled(new MyDTO());
  
          String text = JSON.toJSONString(object, SerializerFeature.WriteClassName);
  
          GenericDTO<MyDTO> object2 = (GenericDTO<MyDTO>) JSON.parseObject(text, GenericDTO.class);
          
          Assert.assertEquals(object.getName(), object2.getName());
          Assert.assertEquals(object.getFiled().getId(), object2.getFiled().getId());
      }
  
      public static class GenericDTO<T extends AbstractDTO> extends AbstractDTO {
  
          private String name;
          private T      filed;
  
          public String getName() {
              return name;
          }
  
          public void setName(String name) {
              this.name = name;
          }
  
          public T getFiled() {
              return filed;
          }
  
          public void setFiled(T filed) {
              this.filed = filed;
          }
      }
  
      public abstract static class AbstractDTO {
  
      }
  
      public static class MyDTO extends AbstractDTO {
  
          private int id;
  
          public int getId() {
              return id;
          }
  
          public void setId(int id) {
              this.id = id;
          }
  
      }
  }
  