我将Serializable
作为自定义界面使用以下方法:
private <T extends Synchronizable> Collection<T> deserialize(String json, Class<T> type) {
Type collectionType = new TypeToken<ArrayList<T>>(){}.getType();
return new Gson().fromJson(json, collectionType);
}
此方法无法正常工作,因为Gson期望类型标记属于特定的泛型类型,例如Type collectionType = new TypeToken<ArrayList<Group>>(){}.getType();
(Group
实施Serializable
)。
有没有人知道这个问题的解决方案,或者我不能在这个地方使用通用方法,这会很尴尬。
答案 0 :(得分:0)
您应该使用您在其中接受的type
参数,如:
private <T extends Synchronizable> Collection<T> deserialize(String json, Class<T> type){
Type collectionType = new TypeToken<ArrayList<Class<T>>>(){}.getType();
return new Gson().fromJson(json, collectionType);
}