Java:有没有办法将String放入List <integer>?

时间:2016-06-22 06:03:32

标签: java

面试问题:

String对象可以是任何格式,而不仅仅是numbers表示。

1 个答案:

答案 0 :(得分:8)

是的,因为类型擦除而导致可能,但是 Bad Idea™以及使用正常方式列表的代码这样做后会抛出ClassCastException

可能,因为此代码运行:

List<Integer> l = new ArrayList<Integer>();
((List)l).add("hello");

这是有效的,因为通过转换为原始List类型而不是参数化的List<Integer>类型,我们绕过了编译检查;并且在运行时,类型参数信息(大部分)由于类型擦除而消失,因此字符串成功添加到列表中。

但同样,任何对{(1}}引用正常写入列表的代码(例如,根据List<Integer>合同)的代码在尝试访问该条目时都会爆炸,因为代码将会尝试将List<Integer>转换为String

更深入一点:

Integer