[問題] 關於泛型型態參數的問題

看板java作者 (重出江湖)時間12年前 (2011/10/09 23:30), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/1
請問 譬如說有個敘述是這樣寫的 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

10/09 23:31, , 1F
建議你自己去寫一個簡單的Generic Class就知道意思了
10/09 23:31, 1F

10/09 23:37, , 2F
然後去看看編譯器拋出來的錯誤訊息
10/09 23:37, 2F

10/09 23:43, , 3F
List是個interface, 而ArrayList是繼承它的class
10/09 23:43, 3F

10/09 23:57, , 4F
上面說「繼承」怪怪的,應該說「實作」比較正確
10/09 23:57, 4F

10/10 15:23, , 5F
List那邊是說你把這個變數看成什麼型態,ArrayList則是
10/10 15:23, 5F

10/10 15:25, , 6F
你實際傳給該變數儲存的物件
10/10 15:25, 6F

10/10 19:28, , 7F
interface oriented面向接口 介面導向
10/10 19:28, 7F
文章代碼(AID): #1EaRudDk (java)