中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

當前位置: 首頁 / 技術干貨 / 正文
民哥帶你快速精通java泛型(二)

2022-10-19

泛型 類型 問題

  泛型的橫空出世

  1. 為什么引入泛型/引入泛型的必要性

  來,我們深入分析下上述代碼運行時出現錯誤的主要原因:

  ArrayList的本質是一個Object數組Object[] elementArr,這種設計雖然體現出來了泛型的思想(泛型:泛指任意類型),但是有以下問題:

  ArrayList實例化之后,可以隨意添加任意類型的對象(Obeject是任意引用類型的基類)。

  獲取元素的前提是:需要提前知道列表元素的類型。

  獲取列表元素時然后進行操作,都需要進行顯式類型轉換,容易發生類型轉換出錯的問題。

  由于早期我們開發者經常操作集合對象,所以頻繁的出現運行期間異常問題,這種問題困擾了很多人,SUN官方的設計師們也下定決心解決這個問題,這些大佬們在想: 如果集合能和數組一樣,在定義時就指定好類型,這樣就不會出現運行期間異常問題了,也就規避了很多安全隱患。

  所以SUN官方提出了泛型技術來解決操作集合中存在的這些問題。

  2. 泛型的引入時機

  SUN官方在推出jdk1.5版本時,就對這樣的問題提出了解決方案: 泛型。

  泛型的由來:通過Object轉型問題引入 ,早期的Object類型可以接收任意的對象類型,泛型其實指的就是任意的對象類型,但是在實際的使用中,會有類型轉換的問題。也就存在這隱患,所以Java提供了泛型來解決這個安全問題。

  所以后期SUN官方的這些大佬們,對泛型的設計核心思想就兩條:

  在定義時,泛型可以指任意的對象類型。

  在使用時,必須明確泛型的具體對象類型。

  來我們看一下,SUN官方jdk1.5之后,對List集合的改造:

/**
* @param <E> the type of elements in this list: 定義List時,E可以指代任意對象的類型
*/
public interface List<E> extends Collection<E> {
----------
}

  下面我們看一下List的使用:

public class GenericsDemo {
public static void main(String[] args) {

//1.創建一個List對象:指定泛型為String
List<String> list = new ArrayList<String>();
//2.向List中添加數據:必須添加String類型的數據
list.add("corn");
list.add("java");
//3.遍歷集合
for (int i = 0; i <list.size() ; i++) {
//4.把集合中的每個元素轉成String類型
String ele = (String) list.get(i);
//5.打印-測試結果
System.out.println("元素的值:"+ele);
}
}
}

  那么如果我們使用 Listlist 添加其它類型的數據呢?

  可以看到下圖:不允許添加除String類型以外的,其它類型的數據,這樣后期操作就不會有問題了。

a2

  小伙伴,我們來簡單的總結一下:

  雖然泛型在定義時可以表示任意對象的類型,但是我們在使用是,必須明確泛型指代的具體類型,那么就這么一點小小的改動帶來的確實本質性的變化: 一勞永逸,體現了泛型的通用性,規避了很多安全問題。

  3. 泛型能做的哪些事

  經過我們剛才的"一頓分析與操作",小伙伴應該基本清楚了泛型能夠解決那些問題了。

  jdk1.5之后加入泛型,主要是為了解決類型轉換的安全隱患,具體體現如下:

  解決泛型對象實例化之后,可以隨意添加任何類型的對象的問題。

  解決獲取泛型元素前,需要提前確定元素的類型的問題。

  解決獲取元素時,需要進行顯式類型轉換的問題。

  解決容易出現類型轉換出錯的問題。

  那么小伙伴們,我們通過下面代碼來細細品味一番:

public class GenericsDemo2 {
public static void main(String[] args) {

//1.創建一個泛型為String的集合: 解決泛型對象實例化之后,可以隨意添加任何類型的對象的問題。
List<String> list = new ArrayList<String>();
//2.向List中添加String類型的數據:解決獲取泛型元素前,需要提前確定元素的類型的問題。。
list.add("corn");
list.add("java");
//list.add(66);//報編譯錯誤:不能添加int型的數據
//3.遍歷集合
for (int i = 0; i <list.size() ; i++) {
//4.把集合中的每個元素:解決獲取元素時,需要進行顯式類型轉換的問題。
String ele = list.get(i);// 不需要類型強轉:解決容易出現類型轉換出錯的問題。
//5.打印-測試結果
System.out.println("元素的值:"+ele);
}
}
}

  其實看完這些代碼后,想必小伙伴心中都有了一個明確的答案:

  之前我們沒有使用泛型操作集合,可以添加任意類型的數據,在后期運行代碼時,進行類型轉換就會出問題。

  如果我們使用了泛型,那么在添加數據時,如果添加的數據類型不對,編譯就會出問題,更不用說后期運行了。

  所以我們用一句話總結泛型:

  泛型主要是將運行期間的異常問題,轉移到編譯期間來體現,避免了類型強制轉換的問題。

  闖關練習

  需求:創建一個指定泛型為Integer的Set集合,添加數字1到100,取出里面的偶數。

  答案:

public class GenericsDemo3 {
public static void main(String[] args) {
//1.創建一個泛型為Integer的集合
Set<Integer> numbers = new HashSet<Integer>();
//2.向set集合中添加數字:1-100
for (int i = 1; i <=100 ; i++) {
numbers.add(i);
}
//3.遍歷set集合,獲取里面的偶數并打印
for (Integer elementData : numbers) {
//4.條件判斷:
if(elementData%2==0){
//5.打印測試:
System.out.println("偶數是:"+elementData);
}
}
}
}

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號

中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

            精品欧美黑人一区二区三区| 蜜桃在线一区二区三区| 韩国中文字幕2020精品| 欧美久久久久免费| 亚洲色图欧美激情| 99re热这里只有精品免费视频| 久久精品亚洲精品国产欧美kt∨ | 国产69精品久久99不卡| 日韩欧美一区中文| 日本三级亚洲精品| 欧美日韩精品免费| 亚洲国产中文字幕在线视频综合| jlzzjlzz亚洲日本少妇| 中文字幕制服丝袜成人av | 国产精品中文字幕日韩精品| 日韩一级高清毛片| 另类综合日韩欧美亚洲| 欧美一级xxx| 免费视频一区二区| 精品欧美一区二区久久| 精品影院一区二区久久久| 欧美xfplay| 国产一区二区三区高清播放| 久久欧美中文字幕| 国产suv一区二区三区88区| 久久九九影视网| 99久久99久久久精品齐齐| 亚洲欧美怡红院| 欧美在线一区二区三区| 日韩激情视频在线观看| 欧美大片一区二区三区| 国产一区91精品张津瑜| 中文字幕一区二区三区色视频 | 成人毛片在线观看| 亚洲欧洲制服丝袜| 欧美人成免费网站| 国产自产高清不卡| 17c精品麻豆一区二区免费| 欧洲一区二区三区在线| 天天综合日日夜夜精品| 亚洲精品在线观看网站| 丰满亚洲少妇av| 亚洲成人动漫在线免费观看| 欧美大胆人体bbbb| 99久久精品情趣| 日本美女一区二区| 中文字幕欧美激情| 欧美电影在哪看比较好| 国产精品一区二区三区99| 午夜精品久久久久久久蜜桃app| 538prom精品视频线放| 欧美激情一区在线观看| 97精品久久久久中文字幕 | 亚洲综合在线第一页| 日韩亚洲电影在线| 成人精品小蝌蚪| 亚洲一区二区高清| 精品国产乱码久久久久久蜜臀| 欧美一区二区三区四区高清| 6080午夜不卡| 欧美刺激脚交jootjob| 日韩欧美国产系列| 精品欧美一区二区三区精品久久| 精品日韩av一区二区| 精品乱码亚洲一区二区不卡| 久久久久久久久蜜桃| 欧美国产激情一区二区三区蜜月 | 久久综合成人精品亚洲另类欧美| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲国产日韩精品| 婷婷久久综合九色综合绿巨人| 视频在线观看91| 奇米色一区二区| 国产在线精品不卡| 国产99一区视频免费| 91免费国产在线观看| 欧美性感一类影片在线播放| 欧美日韩久久一区| 日韩欧美一二三| 国产精品水嫩水嫩| 一卡二卡欧美日韩| 日韩电影在线一区二区三区| 国产在线不卡一区| 色综合久久中文综合久久牛| 欧美日韩国产123区| 欧美成人vr18sexvr| 国产欧美一区二区在线| 怡红院av一区二区三区| 日本aⅴ精品一区二区三区| 国产精品一区二区你懂的| 91一区在线观看| 欧美一区二区三区日韩| 欧美国产1区2区| 亚洲一区二区欧美激情| 久久91精品国产91久久小草| 95精品视频在线| 337p亚洲精品色噜噜狠狠| 久久久91精品国产一区二区精品| 亚洲男同性视频| 国产在线视频一区二区| 色综合咪咪久久| 亚洲精品在线免费观看视频| 亚洲激情在线激情| 国产精品综合在线视频| 在线观看亚洲专区| 久久久亚洲精品石原莉奈| 亚洲成人三级小说| 国产91对白在线观看九色| 欧美日韩第一区日日骚| 国产精品丝袜在线| 麻豆精品一区二区三区| 在线视频你懂得一区| 国产日韩欧美在线一区| 丝袜美腿亚洲一区二区图片| av不卡一区二区三区| 欧美成人三级电影在线| 亚洲国产欧美另类丝袜| 成人午夜在线播放| 精品国产乱码久久久久久久| 亚洲成人午夜影院| 91在线精品秘密一区二区| 久久色视频免费观看| 日本欧美在线观看| 欧美在线色视频| 日韩毛片在线免费观看| 国产揄拍国内精品对白| 欧美一级日韩不卡播放免费| 一二三区精品视频| av日韩在线网站| 日本一区二区不卡视频| 久久99国产精品尤物| 欧美日高清视频| 亚洲一区二区三区三| 色综合久久综合中文综合网| 国产精品免费观看视频| 国产一区二区三区四区五区美女 | 欧美视频完全免费看| 中文一区在线播放| 国产黄色精品网站| 欧美精品一区二区精品网| 日本欧洲一区二区| 在线电影欧美成精品| 午夜久久久久久久久久一区二区| 欧亚洲嫩模精品一区三区| 亚洲三级在线免费| 色综合久久久久久久久久久| 国产精品久久久久久久久动漫 | 亚洲午夜一区二区三区| 色综合激情久久| 99精品视频一区| 国产精品免费视频一区| 国产毛片一区二区| 91精品国产免费| 极品少妇一区二区三区精品视频| 精品成人免费观看| 国产精品自拍毛片| 国产精品久久久久婷婷二区次| 5858s免费视频成人| 日韩国产欧美一区二区三区| 欧美成人免费网站| 国产91丝袜在线播放0| 亚洲特级片在线| 欧美在线你懂的| 秋霞电影网一区二区| 亚洲精品在线网站| 成人av在线观| 夜夜精品浪潮av一区二区三区| 欧美日韩一二三| 激情成人综合网| 成人免费在线视频| 欧美伦理视频网站| 国产精品一区久久久久| 日韩伦理电影网| 7777精品伊人久久久大香线蕉经典版下载 | 欧美一二三四区在线| 国产一区二区导航在线播放| 日韩美女视频19| 欧美高清激情brazzers| 国产毛片精品国产一区二区三区| 中文字幕在线视频一区| 欧美精品粉嫩高潮一区二区| 国产精品一区二区三区网站| 亚洲久本草在线中文字幕| 日韩一区二区影院| 成人免费看片app下载| 午夜视频一区在线观看| 久久久久久久久久看片| 欧美亚洲愉拍一区二区| 国产一区二区三区免费在线观看| 亚洲男女一区二区三区| 日韩午夜av一区| 99视频精品免费视频| 青娱乐精品视频在线| 亚洲日本一区二区三区| 欧美不卡一区二区三区| 欧洲另类一二三四区| 国产成a人亚洲精| 男男视频亚洲欧美| 亚洲精品乱码久久久久久久久 | 666欧美在线视频|