【问题标题】:Use generic class as generic type in Java在 Java 中使用泛型类作为泛型类型
【发布时间】:2017-12-09 09:18:01
【问题描述】:

当我尝试这样做时:

public <T> List<T> get(String key, Class<T> classType) {
        List<classType> list = new ArrayList<classType>();
    }

给我未知的类错误

【问题讨论】:

  • T 是您的泛型类型,classType 只是一个参数名称。

标签: java generics


【解决方案1】:

您实际上不需要classType 参数来创建List。因为你的方法是泛型的并且有一个泛型参数T,所以T是你应该使用的类型!

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

【讨论】:

  • 你的意思是如果我这样做: List list = get();没有任何参数它就可以正常工作
  • @AhmedElmokadim 是的,因为可以推断出T 的类型。但是不要忘记key 参数!
  • 看看当我尝试像这样使用 Gson 库时: public List get(String key) { if (preferences.contains(key)) { Gson gson = new Gson ();类型类型 = new TypeToken>(){}.getType(); return gson.fromJson(get(key, ""), type); } 否则 { 返回空值;发生异常:java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap 无法转换为 com.mokadim.project.MyObject
  • @AhmedElmokadim 对,所以您正在使用 GSON。您需要将gson.fromJson(get(key, ""), type) 返回的值转换为MyObject。我认为这与这个问题无关。如果你被卡住了,我建议你问一个关于这个异常的新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
相关资源
最近更新 更多