Java泛型應用淺析

 Java泛型應用淺析

         Java泛型,餓,這個東西嗎,嚼一下還是有必要的。有啥用呢?小弟曾覺着吧,吹牛是條不錯的出路,但沒一次沒有不吹破的。(繞吧^_^)
         詳解呢,沒啥必要了,參見附件解壓後Java泛型詳解.txt(引用網址…小弟知錯了T^T)。
 
一、泛型概念簡述
         泛型嗎,就是泛泛的類型,指代某一種類型的符號。例如Map<K,V>,K、V指代某種類型一樣。而我們呢,在內部則直接用K、V來進行處理。
         這樣有啥好處呢?1.消除強制類型轉換;2.附加類型檢查,避免錯誤類型;3.確保Java類型安全(這纔是主要目的)等。相信用過集合框架的都有類似體會。
 
二、泛型基礎特徵
         1)在定義泛型類或聲明泛型類的變量時,使用尖括號來指定形式類型參數。例如java.util.Map接口的定義:

         public interface Map<K, V> {

                   public void put(K key, V value);

                   public V get(K key);

         }
         命名方式約定以大寫的單個字母名稱作爲類型參數。常見泛型推薦的名稱:K,鍵;V,值;E,異常類;T,泛型。
 

         2)泛型不是協變的,即無法向上轉型。不同於Object obj = new String("str"),以下方式是錯誤的:

         List<String> strList = new ArrayList<String>();

         List<Object> objList = strList; // invalid

         如果第二行寫成List objList = strList,可以通過編譯但會出現警告(類型不安全)。那如何表示泛型爲一個通用泛型,就是定義個尖括號內可以放任意類型的泛型呢?這是就要使用類型通配符了。
 
         3)類型通配符,’?’表示。可以聲明一個List<?>,作爲任何泛型List的父類型。即List<?> objList = strList,這樣就沒啥問題了。
 
         4)受限泛型,即給泛型定義上下限。簡單說,就是類型參數必須是某類及其子類(上限),或者是某類及其父類(下限)。
         怎麼弄捏,例如List爲傳入參數,限定類型參數必須爲Number,如下:
         public void fun(List<? extends Number> list) {…}
         上述List只接收Number及Number的子類。另一種方式,只接收Integer及其父類,則如下:public void fun(List<? super Integer> list) {…}。
 
三、泛型簡單應用
         OK,現在開始本文最切題的章節啦,各位看官還請拭目以待^_^!
         ……
         參見附件-_-!
 
         附個內容表吧:
包名
樣例名
備註
org.join.generic.one
樣例1:泛型類
一個和多個類型參數的泛型類
org.join.generic.two
樣例2:通配符
輸出了泛型類成員變量類型
org.join.generic.three
樣例3:受限泛型
extends、super
org.join.generic.four
樣例4:泛型接口
泛型接口及其實現
org.join.generic.five
樣例5:泛型方法
返回泛型示例、統一參數類型
org.join.generic.six
樣例6:泛型數組
泛型數組使用
org.join.generic.seven
樣例7:泛型嵌套
Map&List嵌套
 
四、後記
         手冷,嗚嗚…

本文出自 “-_--___---_-” 博客,請務必保留此出處http://vaero.blog.51cto.com/4350852/770135

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章