我可以使用Sprinkles TypeSerializer?</type>序列化ArrayList <type>

时间:2014-11-01 18:10:23

标签: java android

我在Sprinkles模型中有一个对象的ArrayList,我希望将其序列化为一个字符串来存储和传递。我使用TypeSerializer尝试将ArrayList转换为json,但在尝试注册类型时遇到错误。

我认为这与我作为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

1 个答案:

答案 0 :(得分:0)

事实证明,我只需要将其投射到:

Class<ArrayList<Note>>

为了让它发挥作用