如何传递我想要返回的List的类型?

时间:2014-02-19 22:27:58

标签: java list gson

我的情景:

我得到一个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。

1 个答案:

答案 0 :(得分:0)

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