[問題] 關於泛型的使用

作者: tas72732002 (蔥頭)   2015-05-20 11:48:04
想請問一下各位,
泛型可以用來限制容器加入的類型或函式參數的類型, 避免執行發生錯誤,
在取用容器裡面的物件時, 也不需要輸入額外的"強制轉型", 範例如下,
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)呢?
作者: ssccg (23)   2015-05-20 11:51:00
auto-box/unbox,你取出來一樣可以 int k = List1.get(i)把int傳給需要Integer的,compiler會轉成Integer.valueOf把Integer傳給需要int的,compiler會自己加.intValue
作者: Killercat (殺人貓™)   2015-05-20 19:24:00
Autoboxing是個很容易造成bug的東西就是//sigh
作者: pzyc79   2015-05-21 05:08:00
Java的泛型沒這麼複雜 把它想成一張貼紙就好貼紙上寫這個物件內部東西的類型 編譯/執行期就撕掉了單純就只是編譯前的型態檢查 防止丟錯的東西進去至於你說的原生和類別型態就是自動裝箱/拆箱沒錯

Links booklink

Contact Us: admin [ a t ] ucptt.com