2014-11-01 84 views
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 

回答

0

事實證明,我只是需要將其投射到:

Class<ArrayList<Note>>

爲了它的工作

相關問題