在Java中使用泛型类作为泛型类型

在Java中使用泛型类作为泛型类型,java,generics,Java,Generics,当我尝试这样做时: public <T> List<T> get(String key, Class<T> classType) { List<classType> list = new ArrayList<classType>(); } 公共列表获取(字符串键,类类型){ 列表=新的ArrayList(); } 给我未知类错误您实际上不需要classType参数来创建列表。由于您的方法是泛型的,并且具有泛型

当我尝试这样做时:

public <T> List<T> get(String key, Class<T> classType) {
        List<classType> list = new ArrayList<classType>();
    }
公共列表获取(字符串键,类类型){
列表=新的ArrayList();
}

给我未知类错误

您实际上不需要
classType
参数来创建
列表
。由于您的方法是泛型的,并且具有泛型参数
T
T
是您应该使用的类型

List<T> list = new ArrayList<>();
List List=new ArrayList();

T
是您的泛型类型,
classType
只是一个参数名。您的意思是如果我这样做:List List=get();没有任何参数,它只会工作fine@AhmedElmokadim是,因为可以推断
T
的类型。但是不要忘记
参数!当我尝试使用Gson lib这样做时,请看:public List get(字符串键){if(preferences.contains(键)){Gson Gson=new Gson();Type Type=new TypeToken(){}.getType();return Gson.fromJson(get(key,”),Type);}else{return null;}发生异常:java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap无法强制转换为com.mokadim.project。MyObject@AhmedElmokadim对,那么你是在和格森合作。您需要将
gson.fromJson(get(key,”),type)
返回的值转换为
MyObject
。我认为这与这个问题无关。我建议你在遇到这种情况时再问一个新问题。