sha*_*ltc 6 java generics arraylist
在这个例子中
public static void main(String[] args) {
List<Integer> integers = new ArrayList<Integer>();
integers.add(1);
addToList(integers);
System.out.println(integers);
}
public static void addToList(List list0){
list0.add("blabl");
}
Run Code Online (Sandbox Code Playgroud)
这将编译并打印结果
[1,blabl]
我的理解是:
引用变量'integers'具有arraylist对象的地址(比如111),该地址被传递给addToList方法.因此在addToList方法中,list0指向具有该对象的同一地址(它是Integer类型的arraylist),并且将一个字符串添加到此arraylist对象中.
如何将String添加到Integer类型的arraylist?这不是数据完整性问题吗?
更新
下面的答案和这个答案有帮助.谢谢.
这是Type Erasure的典型示例.在Java中,泛型在编译时被删除,并被强制转换替换.
这意味着你可以做到这一点,但你会得到一个ClassCastException
你做的:
Integer myInt = integers.get(1);
Run Code Online (Sandbox Code Playgroud)
事实上,编译器应该在您执行此操作时向您发出警告,因为您在调用方法时隐式转换List<Something>
为List
.编译器知道它无法在编译时验证类型安全性.
归档时间: |
|
查看次数: |
101 次 |
最近记录: |