У меня есть следующий класс:
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());
После этого строка String json
установлен на
[{"test":1},{"test":2},{"test":3}]
Что здорово.
Но теперь все мои классы моделей наследуются от универсального типа Identifiable<T>
, который предоставляет только два метода T getId()
и void setId(T)
,Поэтому я изменяю класс TestSomething
сверху на
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)
...
Что мне нужно сделать, чтобы получить эту работу?