Java Gson与泛型-如何获取具有内部泛型成员的对象

Java Gson与泛型-如何获取具有内部泛型成员的对象,java,json,generics,gson,Java,Json,Generics,Gson,假设我有以下实体 public class City { public int id; public String name; } public class State<T> { public int id; public String name; public T capital; } 公共级城市{ 公共int id; 公共字符串名称; } 公共阶级国家{ 公共int id; 公共字符串名称; 公共技术资本; } 我对资本类型一无所知。 现在我

假设我有以下实体

public class City {
   public int id;
   public String name;
}

public class State<T> {
   public int id;
   public String name;

   public T capital;
}
公共级城市{
公共int id;
公共字符串名称;
}
公共阶级国家{
公共int id;
公共字符串名称;
公共技术资本;
}
我对资本类型一无所知。
现在我创建object并调用toJson和fromJson,如下所示:

City capital = new City(1, "1");
State state = new State<City>(1, "1", capital);

Gson gson = new Gson();
String json = gson.toJson(state);
State fromJsonState = gson.fromJson(json, State.class);
城市首府=新城(1,“1”);
州=新州(1,“1”,首都);
Gson Gson=新的Gson();
字符串json=gson.toJson(state);
State fromJsonState=gson.fromJson(json,State.class);
from方法返回的对象是

所有内容都是键入的,但大写(通用)。
在json序列化和Desiralize之后,如何获得相同的对象?

使用Parameterized构造类型并使用

Gson gson = new Gson();
String json = gson.toJson(state);
Type type = new TypeToken<State<City>>() {}.getType();
State<City> fromJsonState = gson.fromJson(json, type); 

System.out.println(fromJsonState.capital.getClass().getName());
com.x.y.z.City