package com.alibaba.json.test.generic; import java.io.Serializable; import org.junit.Test; import junit.framework.Assert; import junit.framework.TestCase; import com.alibaba.fastjson.JSON; public class GenericTypeTest extends TestCase { @Test public void testEmbeddedGenericType() throws Exception { String jsonString = "{\"g\":{\"b\":{\"s\":'1'}}}"; Str t = JSON.parseObject(jsonString,Str.class); Object o = t.getG().getB(); System.out.println("Inner Class EmbeddedGenericType test => "+o.getClass().getName()); Assert.assertEquals(GenericTypeTest.Bean.class.getName(), o.getClass().getName()); TStr t1 = JSON.parseObject(jsonString,TStr.class); Object o1 = t1.getG().getB(); System.out.println("Public Class EmbeddedGenericType test => "+o1.getClass().getName()); Assert.assertEquals(TBean.class.getName(), o1.getClass().getName()); } static class Str implements Serializable{ Gen<Bean> g; public Gen<Bean> getG() { return g; } public void setG(Gen<Bean> g) { this.g = g; } } static class Gen<G> implements Serializable{ G b; public G getB() { return b; } public void setB(G b) { this.b = b; } } static class Bean implements Serializable{ String s; public String getS() { return s; } public void setS(String s) { this.s = s; } } }