我有以下课程:
public class Top {
private String key;
...
}
public class A extends Top {
private String aValue;
...
}
public class Complex {
private String field;
private List<Top> objects;
}
我想将json String反序列化为“Complex”类,并指定“objects”元素的类型为“A”。
我尝试了两种方法:
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.registerTypeAdapter(A.class, new InstanceCreator<A>() {
@Override
public A createInstance(Type arg0) {
return new A();
}
}) //method 1
.registerTypeHierarchyAdapter(A.class, new My_A_Adapter()) //method 2
.create();
Complex complexObject = gson.fromJson(json, Complex.class);
A = (A) complexObject.getObjects().get(0); // This throws ClassCastException
但是complexObject.getObjects()。get(0)的类型是“Top”,所以我不能把它强制转换为“A”。
我不想参数化Complex类(例如,复杂的),因为我想及时添加更多通用对象的集合......
我有什么解决方案?