語法糖是爲方便程序員編程,編譯器給程序包裝的外衣,使編程語言用起來更靈活。java
java並無實現真實的泛型。在咱們的編程寫的源碼文件中使用了泛型,可是編譯器編譯的字節碼文件中,泛型就被替換爲原來的原生類型了(Object類),並在使用的地方插入了強制轉型代碼。在運行期,泛型是不存在的。程序員
如:ArrayList<String> 和 ArrayList<Integer> 在源碼文件中是兩種不一樣的類型, 但在編譯的字節碼文件中,都爲ArrayList,裏面的類型是Object。 獲取元素,再進行強制轉換。編程
而真泛型,這兩個是不一樣的類型,在運行期,兩種類型也是存在的。編程語言
兩個後果:code
1 編譯期,類型擦除;運行期,沒法體現真實類型。編譯器
2 重載問題:類型被擦除後,就如出一轍了,沒法編譯。源碼
public class _1 { public void method(ArrayList<Integer> list) { for(Integer integer : list) { System.out.println(integer); } } // 不能重載,報錯,沒法編譯 public void method(ArrayList<String> list) { for(String str : list) { System.out.println(str); } } public static void main(String[] args ) { } }