map泛型 map不指定泛型的區別
阿新 • • 發佈:2018-11-30
map泛型 map不指定泛型 與 Map<Object,Object>的區別
private void viewDetail(){ Map map1 = new HashMap(); Map<String,Object> map2 = new HashMap<String,Object>(); Map<Object,Object> map3 = new HashMap<Object,Object>(); Map<String,String> map4 = new HashMap<String,String>(); test1(map1); test1(map2); test1(map3); //編譯錯誤 test1(map4); //編譯錯誤 } private void test1(Map<String,Object> map){ }
在泛型這裡 Object 就只表示Object 不能表示所有物件
因為泛型是保證編譯時你給的實際型別和引數宣告的型別一致,它的意義就在於此,不需要解釋,這是需要你學習的規則而已。
那為什麼map1就可以呢,這裡有歷史原因,因為泛型是後加入的,早期的版本沒有,但是java的開發者希望不能因為加入泛型就要修改成千上萬的現有應用,所以預設他可以通融老版本不加泛型的變數,但是編譯時一定會有提示你有危險程式碼的。
正因為這樣,泛型非常的好破,隨便寫點程式碼就可以讓編譯通過,而執行時錯誤,所以現在開發,一定要使用一種程式碼,千萬不要兩者都用,那樣太危險,如果你用了泛型,就全部都用,切記切記