0
我有一個ArrayList的Sprinkles模型中的對象,我希望能序列化爲一個字符串來存儲和傳遞。我正在使用TypeSerializer嘗試將ArrayList轉換爲json,但在嘗試註冊類型時出現錯誤。我可以使用Sprinkles TypeSerializer序列化ArrayList <Type>嗎?
我認爲這與我作爲registerType方法的第一個參數傳遞的類有關,但我不知道該放什麼。
我TypeSerializer:
public static class NoteListSerializer implements TypeSerializer<ArrayList<Note>> {
@Override
public ArrayList<Note> unpack(Cursor cursor, String s) {
return new Gson().fromJson(cursor.getString(cursor.getColumnIndex(s)), new TypeToken<ArrayList<Note>>(){}.getType());
}
@Override
public void pack(ArrayList<Note> notes, ContentValues contentValues, String s) {
contentValues.put(s, new Gson().toJson(notes));
}
@Override
public String toSql(ArrayList<Note> notes) {
Gson gson = new Gson();
return gson.toJson(notes);
}
@Override
public SqlType getSqlType() {
return SqlType.TEXT;
}
}
和寄存器線:
sprinkles.registerType(new ArrayList<Note>().getClass(), new NoteListSerializer());
將返回以下編譯時錯誤:
Error:(105, 18) error: method registerType in class Sprinkles cannot be applied to given
types;
required: Class<T>,TypeSerializer<T>
found: Class<CAP#1>,NoteListSerializer
reason: inferred type does not conform to equality constraint(s)
inferred: ArrayList<Note>
equality constraints(s): ArrayList<Note>,CAP#2
where T is a type-variable:
T extends Object declared in method <T>registerType(Class<T>,TypeSerializer<T>)
where CAP#1,CAP#2 are fresh type-variables:
CAP#1 extends ArrayList from capture of ? extends ArrayList
CAP#2 extends ArrayList from capture of ? extends ArrayList