隔着超薄肉丝进入小说_男女刺激性视频大片_女教师的诱波多野结衣_一级欧美过瘾大片

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

2022-10-21

泛型 list 表示 類型

  第四關(guān) 泛型之飛天遁地

  小伙伴們,泛型我們已經(jīng)學(xué)到第四關(guān)了,是不是感覺泛型很強(qiáng)大啊!但是不要得意,泛型也有“軟肋”,

好程序員

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

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

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

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

  1.泛型通配符

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

  如下代碼:

  ArrayList list1 ;

  ArrayListlist2 = new ArrayList();

  ArrayListlist3 = new ArrayList();

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

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

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

  上述代碼中創(chuàng)建了一個帶?泛型list1。

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

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

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

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

  2.泛型的上限

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

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

  public interface Listextends Collection{

  /**

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

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

  */

  boolean addAll(Collection c);

  ----

  }

  代碼演示:

  Listlist = new ArrayList();//創(chuàng)建一個集合: 泛型為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 沒有繼承關(guān)系

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

  3.泛型的下限

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

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

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

  比如:

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

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

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

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

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

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

  闖關(guān)練習(xí)

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

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

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

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

  D: 以上說法都不對

  答案:

  ABC

 

好程序員公眾號

  • · 剖析行業(yè)發(fā)展趨勢
  • · 匯聚企業(yè)項目源碼

好程序員開班動態(tài)

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數(shù)據(jù)+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數(shù)據(jù)分析 <高端班>

    開班時間:2021-07-12(北京)

    預(yù)約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發(fā) <高端班>

    開班時間:2021-07-12(北京)

    預(yù)約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號-5 京公網(wǎng)安備 11010802035720號