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可能会帮助你.
确实,你正在创建一个集合,是的,每个集合的超类型,因此可以分配给任何一类泛型;但是,由于编译器无法检查您要添加的内容的类型,因此允许任何类型的添加操作是太通用的.这就是泛型是什么意思:类型检查. 我建议你阅读主题,看看它也适用于你想做的事情. 您的集合只是太通用,不允许添加任何内容.问题与对齐的右侧无关(使用单例或反射),它使用通配符在左侧声明类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 完美解决在eclipse上部署Tomcat时出现8080等端口
- java – 何时使用JDBC调用Connections,Statement
- java – 使用默认程序打开Excel文件
- java – 什么时候Spliter停止分裂?
- JSP application.setAttribute()方法:设置属性
- 基于servlet的执行原理与生命周期(全面解析)
- Java:扩展Object类
- java – ScheduledExecutorService并行多个线程
- java – 在NetBeans GUI Designer中重用JPanel
- java – “StreamCorruptedException:无效的流标
热点阅读