国产另类ts人妖一区二区_欧美肥老太做爰视频_快穿高h肉_国产欧美综合在线

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

2022-10-21

泛型 list 表示 類型

  第四關 泛型之飛天遁地

  小伙伴們,泛型我們已經學到第四關了,是不是感覺泛型很強大啊!但是不要得意,泛型也有“軟肋”,

好程序員

  泛型在使用時,有時并不能隨意指定任意類型,也就是說,泛型在使用時具有類型限制,具體體現為泛型之飛天 ;

  就是泛型的上限,泛型之遁地 ; 就是泛型的下限。

  來吧,我們一起來看一下泛型的上限和下限。

  在泛型上限和下限的分析過程中,我們會看到 ?符號經常出現,在這里 ?表示通配符,表示任意類型,小伙伴們需要注意一下喔。

  1.泛型通配符

  切記: ?表示通配符,表示任意的類型。

  如下代碼:

  ArrayList list1 ;

  ArrayListlist2 = new ArrayList();

  ArrayListlist3 = new ArrayList();

  list1 = list2;// ? 表示 String類型

  list1 = list3;// ? 表示 Integer類型

  在這里,小伙伴一定要注意: ?這個符號神通廣大,可以用來表示任意的泛型類型。

  上述代碼中創建了一個帶?泛型list1。

  如果把創建帶String泛型的list2賦值為list1, 那么此時?表示String 類型

  如果把創建帶Integer泛型的list3賦值為list1, 那么此時?表示Integer類型

  講到這里,小伙伴基本上明白了?符號的含義了,通常 ?會出現在泛型的上限和下限定義中使用中,我們接下來看看?這個通配符,

  在泛型的上限和下限過程怎么使用的,let`s go。

  2.泛型的上限

  定義的基本語法:定義基本語法:類名或者接口名,那么此時 ?表示T類型,或者T的子類型

  我們通過一段List接口的源碼來分析一下泛型的上限,源碼如下:

  public interface Listextends Collection{

  /**

  * 方法作用:將一個集合 添加到 List中,

  * 這時集合的類型 ? extends E ,這里? 表示是E的子類類型,?的上限不能超過E

  */

  boolean addAll(Collection c);

  ----

  }

  代碼演示:

  Listlist = new ArrayList();//創建一個集合: 泛型為Number

  Listson1 = new ArrayList() ;

  Listson2 = new ArrayList() ;

  Liststr_list = new ArrayList();

  list.addAll(son1);// ? 表示 Number,上限是Number

  list.addAll(son2);// ? 表示Long,Long是Number的子類

  // list.addAll(str_list);//編譯報錯: 原因 String 和 Number 沒有繼承關系

  泛型的上限,就是在使用泛型時,不能超過extends后面定義的類型,所以大家在使用時,一定要注意類型的子、父級關系。

  3.泛型的下限

  定義基本語法: 類名或者接口名,那么此時 ?表示T類型,或者T的父類型

  剛剛看了泛型的上限,那么下限對于小伙伴來說就會簡單很多了。

  我們還是通過List集合來分析泛型的下限。

  比如:

  List list = new ArrayList();//創建一個集合

  list = new ArrayList();// ? 表示Integer

  list = new ArrayList();// ? 表示Number: Number是Integer的父類

  list = new ArrayList();// ? 表示Object: Object是Integer的父類

  // list = new ArrayList();//編譯報錯: ? 表示String: String和Integer沒有關系

  泛型的下限,就是在使用泛型時,必須高于super后面的定義的類型,所以大家在使用時,一定要注意類型的父、子級關系

  闖關練習

  請描述 ? 通配符 在泛型中的具體使用(多選)。

  A:在定義泛型的上限時: 可以使用?通配符 表示 泛型的子類

  B:在定義泛型的下限時: 可以使用?通配符 表示 泛型的父類

  C:在定義泛型時,可以不用 ?通配符

  D: 以上說法都不對

  答案:

  ABC

 

好程序員公眾號

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

好程序員開班動態

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號