Java泛型概述

來源:互聯網
上載者:User

       

Map m = new HashMap();m.put("key", "blarg");String s = (String) m.get("key");

        要讓程式通過編譯,必須將 get() 的結果強制類型轉換為 String,並且希望結果真的是一個 String。但是有可能某人已經在該映射中儲存了不是 String 的東西,這樣的話,上面的代碼將會拋出 ClassCastException。
        理想情況下,您可能會得出這樣一個觀點:即 m 是一個Map,它將 String 鍵映射到 String 值。這可以讓您消除代碼中的強制類型轉換,同時獲得一個附加的類型檢查層,該檢查層可以防止有人將錯誤類型的鍵或值儲存在集合中。這就是泛型所做的工作。

        泛型的好處:
        Java 語言中引入泛型是一個較大的功能增強。不僅語言、類型系統和編譯器有了較大的變化,以支援泛型,而且類庫也進行了大翻修,所以許多重要的類,比如集合架構,都已經成為泛型化的了。這帶來了很多好處:
         1、型別安全。 泛型的主要目標是提高 Java 程式的型別安全。通過知道使用泛型定義的變數的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在於程式員的頭腦中。
         2、 Java 程式中的一種流行技術是定義這樣的集合,即它的元素或鍵是公用類型的,比如“String 列表”或者“String到 String 的映射”。通過在變數聲明中捕獲這一附加的類型資訊,泛型允許編譯器實施這些附加的類型約束。類型錯誤現在就可以在編譯時間被捕獲了,而不是在運行時當作 ClassCastException展示出來。將類型檢查從運行時挪到編譯時間有助於您更容易找到錯誤,並可提高程式的可靠性。
         3、消除強制類型轉換。 泛型的一個附帶好處是,消除原始碼中的許多強制類型轉換。這使得代碼更加可讀,並且減少了出錯機會。

       程式碼範例:

class Notepad<K,V>{// 此處指定了兩個泛型型別private K key ;// 此變數的類型由外部決定private V value ;// 此變數的類型由外部決定public K getKey(){return this.key ;}public V getValue(){return this.value ;}public void setKey(K key){this.key = key ;}public void setValue(V value){this.value = value ;}};public class GenericsDemo09{public static void main(String args[]){Notepad<String,Integer> t = null ;// 定義兩個泛型型別的對象t = new Notepad<String,Integer>() ;// 裡面的key為String,value為Integert.setKey("湯姆") ;// 設定第一個內容t.setValue(20) ;// 設定第二個內容System.out.print("姓名;" + t.getKey()) ;// 取得資訊System.out.print(",年齡;" + t.getValue()) ;// 取得資訊}};

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.