当前位置: 首页 > 知识库问答 >
问题:

具有动态ArrayList项类型的Gson TypeToken

霍锦
2023-03-14

我有这个代码:

Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType();
List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);

我试过这个:

    private <T> Type setModelAndGetCorrespondingList2(Class<T> type) {
        Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType();
        return typeOfObjectsListNew;
    }

但不管用。这是一个例外:

java.sql.SQLException: Fail to convert to internal representation: {....my json....}

共有1个答案

满元凯
2023-03-14

您建议的语法无效。以下内容

new TypeToken<ArrayList<Class.forName(MyClass)>>

无效,因为您正在尝试传递需要类型名称的方法调用。

以下内容

new TypeToken<ArrayList<T>>() 

换句话说,如果它看到arraylist ,这就是它将返回的parameterizedtype,您将无法提取类型变量t本来应该具有的编译时值。

typeparameterizedtype都是接口。您可以提供自己实现的实例。

 类似资料:
  • 问题内容: 我有以下代码: 它将字符串转换为对象的。但是,现在我想让它具有在运行时定义的动态类型(而不仅仅是)。 所述的项目类型将与被定义反射。 我尝试了这个: 但这是行不通的。这是例外: 问题答案: 你提出的语法无效。下列 之所以无效,是因为你试图传递期望类型名称的方法调用。 下列 由于泛型(类型擦除)和反射的工作方式,因此无法实现。整个TypeToken黑客工作,因为以下 返回表示该类表示的实

  • 使用Gson库,我通过以下代码将JSON字符串转换为ArrayList对象: 您可以在第二段代码中看到,我使用反射来指定类的类型;但是对于第一段代码,我不知道如何使用反射指定列表的类型。 我该怎么办?!

  • 我有基类WebAnswer, 和继承的类RequestAnsModel

  • 我有一个列数可变的表(取决于客户),所以我在寻找一种使用JPA/Hibernate或其他方法将该表与java对象映射的方法 我不能使用POJO,因为它仅限于一个稳定的表,所以我想像这样使用java对象 } 存储MyObject的表: 当然还有质疑的可能性

  • 如何创建具有整数和字符串输入类型的?如果我创建一个: 这将是一个类型。如果我将其创建为: 这将是类型。我如何创建一个,它可以接受整数和字符串输入类型?谢谢。

  • 问题内容: 在常规数组列表初始化中,我们习惯于如下定义泛型类型, 但是,如果是ArrayLists的ArrayList,我们如何定义其通用类型? 数组列表的数组列表代码如下: 只需共享语法,如果有人对此有想法。 问题答案: 你可以做 如果您需要一个列表数组,可以执行 并安全地忽略或禁止该警告。