package com.alibaba.json.bvt.typeRef; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.annotation.JSONField; import junit.framework.TestCase; /** * Created by wenshao on 09/02/2017. */ public class TypeReferenceTest13 extends TestCase { public void test_typeRef() throws Exception { String json = "{\"result\":{}}"; for (int i = 0; i < 100; ++i) { { SearchResult<ResultItem, CountFacet> searchResult = parseSearchResult( json, ResultItem.class, CountFacet.class); } { SearchResult<ResultItem1, CountFacet1> searchResult = parseSearchResult( json, ResultItem1.class, CountFacet1.class); } } } public static <I, F> SearchResult<I, F> parseSearchResult(String resultStr, Class<I> itemType, Class<F> facetType) { SearchResult<I, F> searchResult = JSON.parseObject(resultStr, new TypeReference<SearchResult<I, F>>() { }); return searchResult; } public static class ResultItem { } public static class CountFacet { } public static class ResultItem1 { } public static class CountFacet1 { } public static class SearchResult<I, F> extends BaseResult { /** * 大的结果对象,包含结果数据、耗时、数量统计等信息 */ @JSONField(name = "result") private ResultDO<I, F> result; /** * 目前没有用到 */ @JSONField(name = "tracer") private String tracer; public String getTracer() { return tracer; } public void setTracer(String tracer) { this.tracer = tracer; } public ResultDO<I, F> getResult() { return result; } public void setResult(ResultDO<I, F> result) { this.result = result; } } public static class BaseResult { } public static class ResultDO<I, F> { } }