作者tas72732002 (葱头)
看板java
标题[问题] 关於泛型的使用
时间Wed May 20 11:48:04 2015
想请问一下各位,
泛型可以用来限制容器加入的类型或函式参数的类型, 避免执行发生错误,
在取用容器里面的物件时, 也不需要输入额外的"强制转型", 范例如下,
ArrayList<Integer> List1 = new ArrayList<Integer>();
List1.add(1);
List1.add(2);
int sum1 = 0;
for(int i=0; i<List1.size(); i++) {
Integer k = List1.get(i);
sum1 += k.intValue();
}
之所以不用强制转型, "是因为底层帮我们做掉了吗"?
因为我的理解他存进去的还是Integer,
所以如果要执行 sum1 += k.intValue(); 还是必须转型为基本型态不是吗?
他为什麽不用强转(Integer)呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.69.59.91
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1432093686.A.98C.html
1F:→ ssccg: auto-box/unbox,你取出来一样可以 int k = List1.get(i) 05/20 11:51
2F:→ ssccg: 把int传给需要Integer的,compiler会转成Integer.valueOf 05/20 11:52
3F:→ ssccg: 把Integer传给需要int的,compiler会自己加.intValue 05/20 11:53
4F:推 Killercat: Autoboxing是个很容易造成bug的东西就是//sigh 05/20 19:24
5F:推 pzyc79: Java的泛型没这麽复杂 把它想成一张贴纸就好 05/21 05:08
6F:→ pzyc79: 贴纸上写这个物件内部东西的类型 编译/执行期就撕掉了 05/21 05:10
7F:→ pzyc79: 单纯就只是编译前的型态检查 防止丢错的东西进去 05/21 05:12
8F:→ pzyc79: 至於你说的原生和类别型态就是自动装箱/拆箱没错 05/21 05:16