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的開發者希望不能因為加入泛型就要修改成千上萬的現有應用,所以默認他可以通融老版本不加泛型的變量,但是編譯時一定會有提示你有危險代碼的。
正因為這樣,泛型非常的好破,隨便寫點代碼就可以讓編譯通過,而運行時錯誤,所以現在開發,一定要使用一種代碼,千萬不要兩者都用,那樣太危險,如果你用了泛型,就全部都用,切記切記