加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java添加到未知类型的通用列表

发布时间:2020-12-14 05:41:14 所属栏目:Java 来源:网络整理
导读:我在 Java中遇到了一些我以前没有遇到过的事情,也就是说,我需要在运行时创建一个新的ArrayList类实例,而不必分配一个已知的类型,然后将数据添加到列表中.听起来有点模糊,所以这里就是一个例子: Class? c = i.getClass();Constructor? con = ArrayList.class
我在 Java中遇到了一些我以前没有遇到过的事情,也就是说,我需要在运行时创建一个新的ArrayList类实例,而不必分配一个已知的类型,然后将数据添加到列表中.听起来有点模糊,所以这里就是一个例子:
Class<?> c = i.getClass();

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

al.add("something");

现在我正在做这个,而不是使用泛型的原因是因为泛型已经被大量使用,并且这个例子中的“i”变量将被赋予使用类型“?”.我真的不会抛出另一个泛型,因为这将为用户带来更多的工作,在最终设计中将变得不那么灵活.有什么办法可以使用下面的东西(注意:下面的内容不起作用).有人有想法吗?

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

解决方法

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

确实,你正在创建一个集合,是的,每个集合的超类型,因此可以分配给任何一类泛型;但是,由于编译器无法检查您要添加的内容的类型,因此允许任何类型的添加操作是太通用的.这就是泛型是什么意思:类型检查.

我建议你阅读主题,看看它也适用于你想做的事情.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读