我已经提到了一些关于SO的问题,例如google gson fromjson() TypeToken和Gson TypeToken with dynamic ArrayList item type,但无法找到确切用例的解决方案。
我的对象层次结构是这样的:
class A
{
List<? extends Parent> files;
A(List<? extends Parent> files){
this.files = files;
}
}
class B extends A
{
B(List<Child> files){
super(files);
}
}
Interface Parent{}
class Child implements Parent{
}
我的tojson代码是:
A data = new B(files);
try(Writer writer = new FileWriter(outputFile))
{
Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.toJson(data,writer);
writer.flush();
}
放入调试器,我发现已填充数据变量,但输出文件包含一个空列表。
在以上帖子中,我研究了一种可能的解决方案,即:
Type listType = new TypeToken<ArrayList<YourClass>>(){}.getType();
但我的问题是,我将此类型嵌套在另一个类中,即上述情况中的B。有什么方法可以使用TypeToken创建嵌套的Type?