91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

《Java架構筑基》從Java基礎講起——泛型基礎

發布時間:2020-07-07 13:41:53 來源:網絡 閱讀:258 作者:未來可期_ 欄目:編程語言

一.泛型的概述

1.1 泛型由來

我們的集合可以存儲多種數據類型的元素,那么在存儲的時候沒有任何問題,但是在獲取元素,并向下轉型的時候,可能會存在一個錯誤,而這個錯誤就是ClassCastException . 很顯然,集合的這種可以存儲多種數據類型的元素的這個特點,不怎么友好 , 程序存在一些安全隱患,那么為了出來這種安全隱患,我們應該限定一個集合存儲元素的數據類型,我們只讓他存儲統一中數據類型的元素,那么在做向下轉型的是就不會存在這種安全隱患了. 怎么限定集合只能給我存儲同一種數據類型的元素呢? 需要使用泛型。

1.2 基本概述

  • 是一種把類型明確的工作推遲到創建對象或者調用方法的時候才去明確的特殊的類型。參數化類型,把類型當作參數一樣的傳遞。
  • 泛型的出現減少了很多強轉的操作,同時避免了很多運行時的錯誤,在編譯期完成檢查類型轉化

1.3 引入泛型的目的

了解引入泛型的動機,就先從語法糖開始了解。

語法糖(Syntactic Sugar),也稱糖衣語法,是由英國計算機學家Peter.J.Landin發明的一個術語,指在計算機語言中添加的某種語法,這種語法對語言的功能并沒有影響,但是更方便程序員使用。Java中最常用的語法糖主要有泛型、變長參數、條件編譯、自動拆裝箱、內部類等。虛擬機并不支持這些語法,它們在編譯階段就被還原回了簡單的基礎語法結構,這個過程成為解語法糖。

1.4 泛型的目的

Java 泛型就是把一種語法糖,通過泛型使得在編譯階段完成一些類型轉換的工作,避免在運行時強制類型轉換而出現ClassCastException,即類型轉換異常。

二.泛型初步探索

JDK 1.5 時才增加了泛型,并在很大程度上都是方便集合的使用,使其能夠記住其元素的數據類型。

在泛型(Generic type或Generics)出現之前,是這么寫代碼的:博客

public static void main(String[] args){
    List list = new ArrayList();
    list.add("123");
    list.add("456");
    System.out.println((String)list.get(0));
}

當然這是完全允許的,因為List里面的內容是Object類型的,自然任何對象類型都可以放入、都可以取出,但是這么寫會有兩個問題:

  • 當一個對象放入集合時,集合不會記住此對象的類型,當再次從集合中取出此對象時,該對象的編譯類型變成了Object。
  • 運行時需要人為地強制轉換類型到具體目標,實際的程序絕不會這么簡單,一個不小心就會出現java.lang.ClassCastException。
  • 所以,泛型出現之后,上面的代碼就改成了大家都熟知的寫法:
    public static void main(String[] args){
    List<String>
    list = new ArrayList<String>();
    list.add("123");
    list.add("456");
    System.out.println(list.get(0));
    }

    這就是泛型。

  • 泛型是對Java語言類型系統的一種擴展,有點類似于C++的模板,可以把類型參數看作是使用參數化類型時指定的類型的一個占位符。引入泛型,是對Java語言一個較大的功能增強,帶來了很多的好處。

三.泛型的格式

3.1 泛型格式如下

  • <數據類型> 這里的數據類型只能是引用數據類型
  • <數據類型1 , 數據類型2 , ....>

四.泛型的好處

  • ①類型安全。類型錯誤現在在編譯期間就被捕獲到了,而不是在運行時當作java.lang.ClassCastException展示出來,將類型檢查從運行時挪到編譯時有助于開發者更容易找到錯誤,并提高程序的可靠性。
  • ②消除了代碼中許多的強制類型轉換,增強了代碼的可讀性。
  • ③為較大的優化帶來了可能。優化了程序設計,解決了黃色警告線。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肃北| 南和县| 上虞市| 通江县| 额济纳旗| 开原市| 昔阳县| 南和县| 乐清市| 岱山县| 藁城市| 绵竹市| 巩义市| 漠河县| 九寨沟县| 阳新县| 连南| 常山县| 阳春市| 沽源县| 香格里拉县| 六安市| 上思县| 容城县| 金乡县| 马公市| 珲春市| 巨野县| 绥中县| 朝阳县| 英吉沙县| 丹凤县| 青铜峡市| 太白县| 谷城县| 黄山市| 大同市| 宁南县| 赣州市| 石嘴山市| 津市市|