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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM