我为ArrayList
持有人
public abstract class ArrayHolder {
Gson g = new Gson();
}
像
一样使用public class MyHolder extends ArrayHolder {
ArrayList<MyType> myList = new ArrayList<MyType>();
}
我想创建抽象函数来填充ArrayList
和String
参数中的Type
像这样(String data
中的String
是JSON:应该重写此函数
public ArrayList<T> arrayType(String data, T type){
return g.fromJson(data, new TypeToken<ArrayList<type>(){}.getType());
}
在子类中使用它
public void fillData(String data){
myList = arrayType(data, MyType.class);
}
我该如何正确地做到这一点?
由于
答案 0 :(得分:3)
试试这个......
public abstract class ArrayHolder {
Gson g = new Gson();
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, TypeToken.get(new ArrayList<T>().getClass()));
}
}
使用
public class MyCollection extends ArrayHolder {
private ArrayList<MyType> collection;
public void setData(String data){
collection = arrayType(data);
}
}
答案 1 :(得分:2)
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, new TypeToken<ArrayList<T>>(){}.getType());
}
答案 2 :(得分:2)
这样做:
public <T> ArrayList<T> arrayType(String data){
return g.fromJson(data, new TypeToken<ArrayList<T>>(){}.getType());
}
我没有处理泛型类型的方法,但从我所看到的,这是正确的。