public class TypeReference<T> {
private final Type type;
protected TypeReference(){
Type superClass = getClass().getGenericSuperclass();
type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
}
public Type getType() {
return type;
}
public final static Type LIST_STRING = new TypeReference<List<String>>() {}.getType();
}
public static void main(String args[]) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
List<Integer> list11 = JSON.parseObject(json, new TypeReference<List<Integer>>(){});
System.out.println("list11:" + list11);
}
public abstract class Human extends SpiritBase{
private String humanName;
public String getHumanName() {
return humanName;
}
public void setHumanName(String humanName) {
this.humanName = humanName;
}
}
public class RPC extends SpiritBase{
private String rpcName;
public String getRpcName() {
return rpcName;
}
public void setRpcName(String rpcName) {
this.rpcName = rpcName;
}
}
public abstract class SpiritBase {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
public class SpiritData<T extends SpiritBase> {
private String id;
private List<T> data;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
public Class getDataClass() {
return (Class) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@Override
public String toString() {
return "SpiritData{" +
"id='" + id + '\'' +
", data=" + data +
'}';
}
public static void main(String args[]) {
SpiritData<RPC> data = new SpiritData<RPC>() {};//gson打印不了这样的
RPC rpc = new RPC();
rpc.setRpcName("rpcNameTest");
List<RPC> rpcList = new ArrayList<>();
rpcList.add(rpc);
data.setData(rpcList);
System.out.println(data);
System.out.println(data.getData().getClass());
System.out.println(data.getDataClass());
System.out.println("gson data:" + JsonUtil.toJSONString(data, 100));
System.out.println("gson rpc:" + JsonUtil.toJSONString(rpcList));
System.out.println("data:" + data);
System.out.println("fastJson:" + JSON.toJSONString(data));
SpiritData<RPC> rpcData = new SpiritData<RPC>() {};//gson打印不了这样的
System.out.println("gson rpc data:" + new Gson().toJson(rpcData));
}
}
public class TypeReference<T> { private final Type type; protected TypeReference(){ Type superClass = getClass().getGenericSuperclass(); type = ((ParameterizedType) superClass).getActualTypeArguments()[0]; } publi.