java – ArrayList是否允许添加String?
我遇到了以下代码,一个向List添加元素的简单示例
List list = new ArrayList<Integer>(); ListIterator<Integer> litr = null; list.add("A"); list.add("1"); list.add(5); litr = list.listIterator(); while(litr.hasNext()){ System.out.println("UIterating " + litr.next()); } 我希望它抛出一个ClassCastException,而是将它写入控制台 A 1 5 这看起来很奇怪.我试过的时候: List<Integer> list = new ArrayList<Integer>(); 我有一个编译时错误. 如果有人能解释如何将String对象添加到ArrayList,我将不胜感激 解决方法
您已将新ArrayList分配给无类型列表.通用类型限制不适用于无类型列表,它可以让您在其中放置任何内容.编译器不会跟踪您的无类型List是指使用泛型类型声明的内容.
在任何情况下,这都不会产生ClassCastException,泛型只会影响编译.在运行时 将类型放在list变量上的情况: List<Integer> list = new ArrayList<Integer>(); 它是首选,它应该生成一个编译器错误,告诉你在集合中输入了错误的类型. 在this article中描述了遗留,非通用代码和通用代码如何互操作:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |