我有一个带有嵌套子类的类
public class OuterClass {
class GenericClassHolder<R> {
@SerializedName("results")
List<R> results;
public GenericClassHolder() {}
public List<R> getResults() {
return results;
}
}
class ExampleClassA {
@SerializedName("A")
int a;
public ExampleClassA() {}
public int getA() {return a;}
}
class ExampleClassB {
@SerializedName("B")
String b;
public ExampleClassA() {}
public String getB() {return b;}
}
}
目前我希望能够拥有一个函数,该函数将hold类作为参数,并返回一个适当的GenericClassHolder实例,例如我当前的代码:
GenericClassHolder<ExampleClassA> genericA = parseJson(jsonString, ExampleClassA.class);
与
<T> GenericClassHolder<T> parseJson(final String jsonString, Class<T> variableClass) throws JsonSyntaxException {
return GSON.fromJson(jsonString, new TypeToken<GenericClassHolder<T>>(){}.getType());
}
但是这在我当前的实现中不起作用,错误
无法为
GenericClassHolder<T>
调用no-args构造函数。使用Gson为此类型注册InstanceCreator可以解决此问题。
我如何简洁实现上述目标,即拥有一个函数,该函数将可能更改的类的规范作为输入并相应地解析为此对象?如果无法通过函数实现优雅的解决方案,如何在没有函数的情况下实现这一目标?
答案 0 :(得分:0)
我在Google Appengine实例中部署了此代码,由于某些安全原因,我无法反序列化我在本地计算机上反序列化和复制的方式。解决方案是使反序列化的类静态;它们也嵌套在外部封装类中