1. 程式人生 > >map泛型 map不指定泛型的區別

map泛型 map不指定泛型的區別

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的開發者希望不能因為加入泛型就要修改成千上萬的現有應用,所以預設他可以通融老版本不加泛型的變數,但是編譯時一定會有提示你有危險程式碼的。

正因為這樣,泛型非常的好破,隨便寫點程式碼就可以讓編譯通過,而執行時錯誤,所以現在開發,一定要使用一種程式碼,千萬不要兩者都用,那樣太危險,如果你用了泛型,就全部都用,切記切記