【问题标题】:How can I pass the type for the List I want return?如何传递我想要返回的列表的类型?
【发布时间】:2014-02-19 22:27:58
【问题描述】:

我的场景:

我得到一个 jsonArray,我想将此 jsonArray 转换为所需类型的 List;即List<Integer>List<String>

假设我有以下方法:

public static List jsonArrayToJavaList(JsonArray jsonArray, TYPE TYPE) {
    return new Gson().fromJson(jsonArray, new TypeToken<List<TYPE>>() {}.getType());
}

我如何传递TYPE

我想这样做是因为其他人可以使用此方法,并且我不想为我想要的每种类型的列表复制此代码...

我也试过了:

public static List jsonArrayToJavaList(JsonArray jsonArray, final Class c) {
    return new Gson().fromJson(jsonArray, new TypeToken<List<c>>() {}.getType());
}

我看到错误提示未知类 c。

【问题讨论】:

  • 我猜你可以通过某种方式利用Class&lt;T&gt;
  • @DennisMeng 你能提供一个sn-p吗?我想我试过了,但没有用。
  • 我还没有任何具体的东西(因此它仍然只是一个猜测)。如果我在其他人发帖之前得到具体的东西,我会发布答案。话虽如此,您可以用您所做的以及为什么它不起作用来更新问题。谁知道?这可能是一件小事。
  • @DennisMeng 我用 Class 添加了我的代码
  • Creating lists of dynamic types 的可能重复项 - 答案是:由于类型擦除,您不能这样做。

标签: java list gson


【解决方案1】:

Java 尚未提供表示泛型类型的官方方法。如javadoc 中所述,提供了 TypeToken 以提供表示这些类型的可能性。因此,简单的解决方案是将其用作 jsonArrayToJavaList 方法的参数。但是,这只是对 fromJson 调用的间接调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2021-07-29
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多