2 回答

慕慕森
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
泛型就是一種語法糖,只在你寫代碼的時(shí)候方便編輯器糾錯(cuò)。
舉個(gè)例子,
List<Integer> list = new ArrayList<>(); //list.add("String"); //ERRORlist.add(10); System.out.println(list.get(0));
上邊被注釋掉的就是錯(cuò)誤的示例,編輯器會(huì)提醒你糾正錯(cuò)誤。
在經(jīng)過java編譯器編譯成字節(jié)碼后會(huì)自動(dòng)去除掉泛型,同時(shí)在get方法前會(huì)強(qiáng)制轉(zhuǎn)換為原先的類型。
如何證明以上說法?
public class Test{ public void change(List<Integer> list){} public void change(List<String> list){} }
上邊這個(gè)代碼就會(huì)被編譯器報(bào)錯(cuò),原因是List參數(shù)經(jīng)過編譯后類型都會(huì)被擦除,所以這兩個(gè)方法的特征簽名一模一樣。
添加回答
舉報(bào)
0/150
提交
取消