gpt4 book ai didi

Java 添加到未知类型泛型列表

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:48 25 4
gpt4 key购买 nike

我遇到了以前在 Java 中从未遇到过的问题,也就是说,我需要在运行时创建一个新实例,例如 ArrayList 类,而不分配已知类型,然后将数据添加到列表中。这听起来有点含糊,所以这里有一个例子:

Class<?> c = i.getClass();

Constructor<?> con = ArrayList.class.getConstructor();
ArrayList<?> al = (ArrayList<?>)con.newInstance();

al.add("something");

现在我这样做而不是只使用泛型的原因是因为泛型已经被大量使用并且这个例子中的“i”变量将被指定为类型“?”。我真的不想加入另一个泛型,因为这会给用户带来更多的工作,并且最终设计的灵 active 会大大降低。有什么方法可以使用类似下面的东西(注意:下面的东西不起作用)。有人有想法吗?

ArrayList<c> al = (ArrayList<c>)con.newInstance();

最佳答案

您不能在使用通配符泛型定义的集合中添加对象。 This thread可能会帮助你。

确实,您正在创建一个集合,是的,它是每个集合的父类(super class)型,因此,可以将其分配给任何泛型集合;但是它太通用了,不允许任何类型的添加操作,因为编译器无法检查您要添加的内容的类型。这正是泛型的意义所在:类型检查。

我建议您阅读该主题,看看它是否也适用于您想做的事情。

您的集合太通用了,不允许添加任何内容。问题与赋值的右侧无关(使用单例或反射),它在使用通配符的左侧声明类型中。

关于Java 添加到未知类型泛型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6515228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com