2015-06-01 115 views
2

這裏是我的情況GSON如何動態地設置序列化的名字

// a base class 
public abstract class PageResult<T> { 
    @SerializedName("success") 
    public boolean success = false; 
    @SerializedName("next_page") 
    public int nextPage = -1; 
    public ArrayList<T> dataList; 
} 

dataListSerializedName需要是動態的,即

public class StringPageResult extends PageResult<String>{ 
    //for this case 
    @SerializedName("StringResult") 
    public ArrayList<String> dataList 
} 

public class IntegerPageResult extends PageResult<Integer>{ 
    //for this case 
    @SerializedName("IntegerResult") 
    public ArrayList<Integer> dataList 
} 

而延伸的PageResult類,SerializedName需要是不同的,所有必須的使用dataList。含義我需要使用PageResult dataList進行各種處理而不是子類dataList。是否有可能? 我做它在以下方式

public abstract class PageResult<T> { 
    public abstract ArrayList<T> getDataList(); 
    @SerializedName("success") 
    public boolean success = false; 
    @SerializedName("next_page") 
    public int nextPage = -1; 
} 

public class StringPageResult extends PageResult<String>{ 

    @SerializedName("StringResult") 
    public ArrayList<String> dataList; 
    public abstract ArrayList<String> getDataList(){ 
    return dataList; 
    } 
} 
+0

我想'IntegerPageResult'的'dataList'應該是類型ArrayList的''的?除此之外,什麼不起作用? –

+0

@ david.mihola:當我在所有子類上使用單個'dataList'時,當我訪問'PageResult.dataList'時它將變空。 – laaptu

回答