看板 java 關於我們 聯絡資訊
請問 譬如說有個敘述是這樣寫的 List<Integer> x=new ArrayList<Integer>(); 請問前面的ArrayList<Integer>跟後面的ArrayList<Integer>() 請問在型態參數上兩者分別代表什麼意義呢? 會這樣問是因為書上有提到 List<Object> y=x; 像這樣會有編譯上的錯誤 我剛剛想到的解釋不知道對不對 在new ArrayList<Integer>()這段的Integer決定ArrayList物件的實際型態參數 而在前面的List<Integer>部份 則是決定我在傳入參數給予這個ArrayList實體物件可以傳入的型態 所以如果執行 y.add(new Object()); 這樣是可以的 因為傳入的物件滿足Object或Object的子類別這條件 但如果使用x.get(0); 將會因為回傳的實際型態是Integer而非Object因而發生錯誤 上面的解釋感覺漏洞百出= = 懇請諸位高手補完~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.146.227
chchwy:建議你自己去寫一個簡單的Generic Class就知道意思了 10/09 23:31
chchwy:然後去看看編譯器拋出來的錯誤訊息 10/09 23:37
james732:List是個interface, 而ArrayList是繼承它的class 10/09 23:43
james732:上面說「繼承」怪怪的,應該說「實作」比較正確 10/09 23:57
mars90226:List那邊是說你把這個變數看成什麼型態,ArrayList則是 10/10 15:23
mars90226:你實際傳給該變數儲存的物件 10/10 15:25
lachtchlee:interface oriented面向接口 介面導向 10/10 19:28