Java抽象类函数泛型类型

时间:2011-12-08 20:17:49

标签: java class polymorphism gson abstract

我为ArrayList持有人

创建了抽象类
public abstract class ArrayHolder {
    Gson g = new Gson();
}

一样使用
public class MyHolder extends ArrayHolder {
    ArrayList<MyType> myList = new ArrayList<MyType>();
}

我想创建抽象函数来填充ArrayListString参数中的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);
}

我该如何正确地做到这一点?

由于

3 个答案:

答案 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());
}

我没有处理泛型类型的方法,但从我所看到的,这是正确的。