java編譯器的泛型

導語:泛型以限定集合中的輸入類型,讓編譯器擋住源程序中的非法輸入。下面是相關介紹,歡迎參考!

java編譯器的泛型

**泛型是提供給javac編譯器使用的,可以限定集合中的輸入類型,讓編譯器擋住源程序中的非法輸入,

編譯器編譯帶類型説明的集合時會去除掉“類型”信息,使程序運行效率不受影響,

對於參數化的泛型類型,getClass()方法的返回值和原始類型完全一樣。

由於編譯生成的字節碼會去掉泛型的類型信息,只要能跳過編譯器,

就可以往某個泛型集合中加入其它類型的數據,例如,用反射得到集合,再調用其add方法即可。

**ArrayList類定義和ArrayList類引用中涉及如下術語:

整個稱為ArrayList泛型類型

ArrayList中的E稱為類型變量或類型參數

整個ArrayList稱為參數化的類型

ArrayList中的Integer稱為類型參數的實例或實際類型參數

ArrayList中的.<>念着typeof

ArrayList稱為原始類型

**參數化類型與原始類型的兼容性:

參數化類型可以引用一個原始類型的對象,編譯報告警告,

例如, Collection c = new Vector();//可不可以,不就是編譯器一句話的事嗎?

原始類型可以引用一個參數化類型的對象,編譯報告警告,

例如, Collection c = new Vector();//原來的方法接受一個集合參數,新的類型也要能傳進去

**參數化類型不考慮類型參數的繼承關係:

Vector v = new Vector