Java 泛型簡單入門
前言
自學(xué)瘋狂Java書籍吨娜,認(rèn)真學(xué)習(xí)過Java Collection 集合侥涵,學(xué)的似懂非懂;
書籍中創(chuàng)建List Collection 實例方法如下:
Map map =new HashMap();
List list = new ArrayList((Collection) map);
但工作中使用List創(chuàng)建 Collection實例方法如下
//心中疑問<>尖括號,有什么用途录粱,瘋狂Java書籍中List Collection沒有使用<>掘剪?
private List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Google Java List <> 尖括號
<>:表示泛型平委,重新翻閱學(xué)習(xí)瘋狂Java書籍泛型章集
泛型簡單入門
Java Collection 缺點
- 對象丟進(jìn)集合,集合會忘記對象數(shù)據(jù)類型
創(chuàng)建只能保存Dog集合夺谁,但Java Collection 程序可以輕易將 Cat 對象丟進(jìn)去廉赔,可能引發(fā)異常肉微; - 對象放入Collection 集合時,集合丟失了對象狀態(tài)信息蜡塌,Collection 默認(rèn)一律為 Object 對象 碉纳,取出集合集合元素后還需強制類型轉(zhuǎn)換,增加編程復(fù)雜度馏艾;
不使用泛型 Collection 用例
//創(chuàng)建只想保存String字符串的List集合
List strList = new ArrayList();
StrList.add("Java Collectin study 01 ");
StrList.add("Java Collectin study 02 ");
StrList.add("Java Collectin study 03 ");
//“不小心”把一個Integer對象丟進(jìn)了“Collection”
StrList.add(08);
for( int i = 0;i < strList.size() ;i++){
//List取出的對象全部為Object劳曹,必須強制性類型轉(zhuǎn)換;
//最后一個元素出現(xiàn)ClassCastException異常
String str = (String)strList.get(i);
}
泛型作用:針對Java Collection
泛型主要用途是為解決Java Collection上述缺點琅摩。
使用泛型铁孵,泛型為了解決上述問題,使用泛型<>限制丟入集合的類型房资,改進(jìn)后程序如下:
//創(chuàng)建只想保存String字符串的List集合蜕劝,
//存入集合中對象必須為String字符串對象,存入其他類型數(shù)據(jù)對象會報錯
List<String> strList = new ArrayList<String>();
StrList.add("Java Collectin study 01 ");
StrList.add("Java Collectin study 02 ");
StrList.add("Java Collectin study 03 ");
//“不小心”把一個Integer對象丟進(jìn)了“Collection”
StrList.add(08);//IDE 會報錯
for( int i = 0;i < strList.size() ;i++){
//List取出的對象全部為Object轰异,必須強制性類型轉(zhuǎn)換熙宇;
//最后一個元素出現(xiàn)ClassCastException異常
String str = (String)strList.get(i);
}