語法糖之泛型

    語法糖是爲方便程序員編程,編譯器給程序包裝的外衣,使編程語言用起來更靈活。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 ) {
        
    }
}
相關文章
相關標籤/搜索