面试问题:
String
对象可以是任何格式,而不仅仅是numbers
表示。
答案 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