亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

黑馬程序員——泛型

2019-11-14 15:10:35
字體:
來源:轉載
供稿:網友

------<a target="blank">java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

(一).  泛型

1.1 介紹

  泛型是JDK5.0新增加的一個特性,泛型的本質是參數化類型,即所操作的數據類型都被指定為一個參數。這種類型參數可以用在類、接口、和方法的創建中,分別稱為泛型類、泛型接口、泛型方法。Java語言引入泛型的好處是安全簡單。

1.2 認識泛型

  在JDK5.0之前,沒有泛型的情況下,通過對類型Object的引用來實現參數的"任意化",但"任意化"帶來的缺點是需要顯示的強制類型轉換,此種轉換要求開發者對實際參數類型預知的情況下進行的。對于強制類型轉換錯誤的情況,編譯器可能不會提示錯誤,但在運行的時候會出現異常,這是一個安全隱患。

1.3 泛型的優勢

  使用泛型的優勢在于編譯期間檢查類型,捕捉類型不匹配錯誤,并且所有的轉換都是自動和隱式多的,提高代碼復用率。

(二).  泛型的使用 

2.1  泛型定義

  實例化泛型類的語法結構如下:

  1 classname<type-param-list> obj = new classname<type-param-list> (cons-arg-list);  

  泛型定義通常使用一個唯一的大寫字母表示一個類型參數。

2.2  代碼演示

 1 //創建泛型類 2 public class Generic <T> { 3     PRivate T ob;//定義泛型成員變量 4     public Generic(T ob){ 5         this.ob = ob; 6     } 7     public T getOb(){ 8         return ob; 9     }10     public void setOb(T ob){11         this.ob = ob;12     }13     public void showType(){14         System.out.println("實際類型是:" + ob.getClass().getName());15     }16 }

  接下來創建類:

 1 //創建測試類,用于解釋泛型的使用方法 2 public class GenericDemo { 3     public static void main(String[] args) { 4         //定義泛型類Genneric的一個Integer版本 5         Generic<Integer> intOb = new Generic<Integer>(88); 6         intOb.showType(); 7         int i = intOb.getOb(); 8         System.out.println("value=" + i); 9         System.out.println("---------------------------------");10         //定義泛型類Genneric的一個String版本11         Generic<String> strOb = new Generic<String>("Hello");12         strOb.showType();13         String s = strOb.getOb();14         System.out.println("value=" + s);15     }16 }

  運行結果:

1 實際類型是:java.lang.Integer2 value=883 ---------------------------------4 實際類型是:java.lang.String5 value=Hello

2.3  理解泛型需注意3點

  • 泛型的類型參數是類類型(包括自定義類),不能是基本數據類。
  • 同一種泛型可以對應多個版本(因為類型參數是不確定的),不同版本的泛型類實例是不兼容的。
  • 泛型的類型參數可以有多個。

(三).  有界類型

3.1  介紹

  在有些時候需要對類型參數的取值進行一定程度的限制,以使數據具有可操作性。為了處理這種情況,Java提供了有界類型。在指定類型參數時可以使用extends關鍵字限制此類型參數代表的類必須繼承自指定父類或父類本身。比如創建一個類:public class BoundGeneric<T extends Number>{},BoundGeneric類的定義中,使用extends關鍵字將T的類型限制為Number類及其子類。

3.2  注意

  在使用extends(如:T extends someClass)聲明的泛型類進行實例化時,運行傳遞的類型參數是:如果someClass是類,可以傳遞someClass本身及其子類,如果someClass是接口,則可以傳遞實現接口的類。

3.3  通配符

  通配符由”?“來表示,代表一個未知類型。

  例如:public static void func(Generic <?> T){}或者結合有界類型使用

     public static void func(Generic <? extends Number> T)

(四).  泛型的局限

4.1 泛型的局限性

  其實Java并沒有真正的實現泛型,是編譯器在編譯的時候在字節碼上了做手腳(成為擦除),這種實現理念造成java泛型本身有很多漏洞,局限性很大。其中大多數限制性是由類型擦除引起的。

  • 泛型不能被實例化。但可以通過調用Class.newInstance和Array.newInstance方法,利用反射構造泛型對象和數組。
  • 不能實例化泛型數組,即不能創建一個類型特定的泛型引用數組。如:Gen<String> []arrays = new Gen<String> [100];該語句是非法語句,因為會損害類型安全,但是如果使用通配符,就可以創建泛型類型的引用數組,如:Gen<?> []arrays = new Gen<?> [10];
  • 不能用類型參數替換基本類型。因為擦除類型后原先的類型參數被Object或者限定類型替換,而基本類型是不能被對象所存儲的,但是可以使用基本類型的包裝類來解決此問題。
  • 異常。不能拋出也不能捕獲泛型類的異常對象,使用泛型類來擴展Throwable也是非法的。
1 public class GenericException <T> extends Exception{2     //泛型類無法繼承Throwable,非法  3 }

  不能在catch子句中使用類型參數,如下面的方法將不能編譯:

1 public static <T extends Throwable> void doWork(Class<T>  t){2     try {3     } catch (T e) {//不能捕獲類型參數異常4     }5 }

  但是,在異常聲明中可以使用類型參數。下面這個是合法的:

1 public static <T extends Throwable> void doWork(T t) throws T {2     try {3     } catch (Throwable realCause) {//不能捕獲類型參數異常4         throw t;        5     }6 }
  • 靜態成員。不能在靜態變量或者靜態方法中引用類型參數。如下述語句是非法的:
1 public class Gen<T>{2     //靜態變量不能引用類型參數3     static T ob;4     //靜態方法不能引用類型參數5     static T getOb(){6         return ob;7     }8 }

  盡管不能在靜態變量或靜態方法中引用類型參數,但可以聲明靜態泛型方法。

(五).  技巧

  當方法靜態時,不能訪問類上定義的泛型,如果靜態方法使用泛型,只能將泛型定義在方法上,注意放置位置:public static <Y> void method(Y obj)

  ? extends E :接收E類型或者E的子類對象((對于本身來說是)上限)

  ? super E  :接收E類型或者E的父類型(下限)

  在集合存元素時,一般使用上限,因為這樣取出都是按照上限類型來運算,不會出現安全隱患。

  什么時候使用下限呢?

  通常對集合中的元素進行取出操作時,可以用下限。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
蜜月aⅴ免费一区二区三区| 中国china体内裑精亚洲片| 国产欧美精品一区二区三区介绍| www.精品av.com| 第一福利永久视频精品| 国产精品免费久久久久久| 亚洲乱码国产乱码精品精天堂| 亚洲欧洲一区二区三区久久| 久久久精品2019中文字幕神马| 国产欧美 在线欧美| 亚洲国产美女久久久久| 亚洲黄色www网站| 久久久中文字幕| 国产精品极品尤物在线观看| 欧美色另类天堂2015| 欧美xxxx做受欧美.88| 欧美丝袜一区二区| 中文字幕精品一区久久久久| 成人免费xxxxx在线观看| 欧美野外猛男的大粗鳮| 日韩在线视频线视频免费网站| 精品av在线播放| 不卡毛片在线看| 欧美成人精品在线观看| 国产视频亚洲视频| 欧美乱人伦中文字幕在线| 久久久久久久久久久人体| 国产精品激情av在线播放| 亚洲欧美一区二区激情| 欧美福利视频在线| 欧美午夜美女看片| 中文字幕亚洲国产| 欧美另类交人妖| 久久精品国产久精国产思思| 色狠狠久久aa北条麻妃| 国产精品99久久久久久人| 欧美视频一区二区三区…| 亚洲网址你懂得| 国产精品久久久久久av下载红粉| 日韩视频精品在线| 欧美丝袜一区二区三区| 亚洲的天堂在线中文字幕| 国语自产精品视频在线看一大j8| 亚洲男人第一网站| 国产91精品久久久久久| 91av成人在线| 亚洲综合在线中文字幕| 一区二区欧美日韩视频| 91av成人在线| 538国产精品视频一区二区| 国产一区欧美二区三区| 91视频国产精品| 超碰97人人做人人爱少妇| 亚洲激情 国产| 91沈先生作品| 国产精品69av| 精品夜色国产国偷在线| 国产剧情久久久久久| 韩日精品中文字幕| 欧美xxxx做受欧美| www.欧美三级电影.com| 欧美日韩国产激情| 精品视频在线观看日韩| 亚洲女人初尝黑人巨大| 色综合伊人色综合网站| 一本一本久久a久久精品综合小说| 正在播放国产一区| 亚洲第一视频网| 欧美精品aaa| 久久天天躁狠狠躁夜夜躁2014| 亚洲精品国产综合久久| 国产日韩在线播放| 中文字幕免费精品一区高清| 91在线直播亚洲| 91精品国产综合久久久久久久久| 久久人人97超碰精品888| 亚洲精品国产免费| 欧美一区二区影院| 国产午夜精品视频| 97超碰国产精品女人人人爽| 国产精品丝袜高跟| 欧美黑人极品猛少妇色xxxxx| 96pao国产成视频永久免费| 亚洲欧洲成视频免费观看| 精品亚洲一区二区三区在线播放| 欧美激情视频在线| 亚洲第一中文字幕在线观看| 日韩免费av片在线观看| 久久精品国产一区二区电影| 国产成人一区二区在线| 美女精品视频一区| 亚洲精品网站在线播放gif| 亚洲影视中文字幕| 欧美精品国产精品日韩精品| 久久av中文字幕| 国产精品久久久久久搜索| 成人精品一区二区三区电影免费| 亚洲免费av电影| 国产精品视频白浆免费视频| 亚洲影院色在线观看免费| 日韩欧美在线第一页| 欧美精品成人91久久久久久久| 久久中文字幕一区| 成人欧美在线观看| 日本精品视频在线播放| 久久精品国产91精品亚洲| 久久久欧美一区二区| 亚洲精品福利资源站| 欧美精品久久久久a| 亚洲国产天堂网精品网站| 欧美日韩美女视频| 91香蕉嫩草影院入口| 91中文字幕一区| 亚洲精品视频中文字幕| 国产中文字幕91| 激情懂色av一区av二区av| 91亚洲人电影| 国产精品久久久久久久电影| 欧美多人乱p欧美4p久久| 亚洲第一页在线| 亚洲摸下面视频| 亚洲天堂av在线免费| 2019中文字幕在线观看| 精品美女国产在线| 亚洲精品国产精品国自产观看浪潮| 8x拔播拔播x8国产精品| 国产91精品久| 最新国产精品拍自在线播放| 91黄色8090| 欧美专区第一页| 亚洲视频在线观看免费| 亚洲精品suv精品一区二区| 91在线|亚洲| 日本久久久a级免费| 精品久久久一区二区| 欧美电影免费观看大全| 亚洲自拍欧美色图| 奇米一区二区三区四区久久| 2019中文字幕在线免费观看| 欧美日产国产成人免费图片| 中文日韩在线观看| 日韩av中文字幕在线播放| 在线免费看av不卡| 国产91精品久久久久久久| 亚洲夜晚福利在线观看| 久久精彩免费视频| 国产视频欧美视频| 国产在线精品一区免费香蕉| 亚洲奶大毛多的老太婆| 久久久国产在线视频| 欧美日韩在线免费| 国产做受69高潮| 国产在线观看不卡| 日韩欧亚中文在线| 性欧美xxxx| 国产日本欧美一区| 欧美日韩国产限制| 91香蕉国产在线观看| 国产精品欧美激情在线播放| 日本一区二区在线免费播放| 久久久精品视频在线观看| 69久久夜色精品国产7777| 欧美激情精品久久久| 久久久亚洲影院你懂的|