我有下面的类继承:Gson.toJson(),从一个普通类
public static class TestSomething {
Integer test;
public TestSomething(Integer test) {
this.test = test;
}
// getter and setter for test
}
好了,现在GSON创建这个类的集合,其序列:
Collection<TestSomething> tests = Arrays.asList(
new TestSomething(1),
new TestSomething(2),
new TestSomething(3)
);
String json = new Gson().toJson(tests, new TypeToken<Collection<TestSomething>>() {}.getType());
后对此,字符串json
设置为
[{"test":1},{"test":2},{"test":3}]
这是伟大的。
但是现在,我所有的模型类都继承了一个通用类型Identifiable<T>
,它只提供了两种方法T getId()
和void setId(T)
。所以我改变TestSomething
-class从上面
public static class TestSomething extends Identifiable<Long> {
// same as above
}
当我试图通过Gson.toJson()
把这个,GSON结束,以下情况例外:
java.lang.UnsupportedOperationException: Expecting parameterized type, got class path.to.TestSomething.
Are you missing the use of TypeToken idiom?
See http://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Gener
at com.google.gson.TypeInfoFactory.getActualType(TypeInfoFactory.java:97)
...
所以,我有什么做得到这份工作?