java - 无法构造泛型类型参数,该怎么办?

标签 java list generics type-erasure

Possible Duplicate:
Create instance of generic type in Java?

在尝试编写以下内容后,我才发现 Java 不允许您构造泛型类型参数的新实例:

public static <C extends JSONSerializable> List<C> JSONtoList(JSONArray data) {
    List<C> list = new ArrayList<C>();
    for (int i = 0; i < data.length(); i++){
        list.add(new C(data.get(i)));
    }
    return list;
}

这不能编译,但我认为我想要做的事情很明显。我该怎么做?

最佳答案

如果您使用 GSON,这实际上非常简单:

public static <C extends JSONSerializable> List<C> jsonToList(JsonArray data, Class<C> type) {
    Gson gson = new Gson();
    List<C> list = new ArrayList<C>();
    for (JsonElement e : data)
        list.add(gson.fromJson(e, type));
    return list;
}

否则,您将需要使用反射或ClassnewInstance方法。

关于java - 无法构造泛型类型参数,该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9918285/

相关文章:

R列表获取每个元素的第一项

list - 删除 Redis 列表中的所有条目

Java 通用构建器

c# - .NET泛型中重载运算符约束的解决方案

java - Spring bean创建错误

java - 哪些变量或对象应该与 transient 关键字相关联?

java - 如何递归计算数字的平均值

java - 无法在 Spring Data Redis 中管道化 EVALSHA 命令

Python 参数解析 : type conversion of a list of default arguments

java - 为什么 Java 不允许创建泛型数组?