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

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

2022-10-20

泛型    類型 map

  第三關 領略泛型之美

  走到這里,相信小伙伴們已經知道泛型的基本使用了,那么泛型之美到底體現(xiàn)在什么地方呢? 我們一起揭開這位“美人”的神秘面紗。

好程序員

  泛型之美具體體現(xiàn)如下三個方面:

  1. 編譯期間類型檢查。

  如下代碼:

  Setset = new HashSet();//指定set集合的泛型為Integer

  set.add(100);//添加數(shù)字

  set.add("java");//報編譯期間異常:集合的泛型為Integer,不能添加String的字符串

  來,小伙們我們來分析下這段代碼:

  1.我們創(chuàng)建了一個帶Integer泛型的Set集合對象,指定Set集合只能添加Integer類型的數(shù)據(jù)

  2.如果添加其它類型的數(shù)據(jù),java的編譯器就會檢查,并且提示錯誤信息,就好像老師檢查作業(yè)一樣,在出錯的地方標記紅線。

  在編譯過程,java的編譯器都會自動檢查添加的數(shù)據(jù)與我們指定的泛型是否一致,以后再也不怕添加錯誤的數(shù)據(jù)了,很贊吧。

  2. 避免強轉類型轉換

  如下代碼:

  //1.定義沒有泛型的方法: 創(chuàng)建對象

  public static Object createObj(Object obj){

  return obj;

  }

  //2.定義有泛型的方法: 創(chuàng)建對象

  public staticT createT(T t){

  return t;

  }

  //3.測試

  public static void main(String[] args) {

  Date date1 = (Date) createObj(new Date());//沒有泛型的方法: 類型強轉

  Date date2 = createT(new Date());//有泛型的方法:不需要類型強轉

  }

  為了加強對比,我們定義了兩個方法,一個帶泛型,一個不帶泛型。

  根據(jù)測試的結果,顯而易見:

  帶泛型的方法在創(chuàng)建對象時,傳入什么類型,就得到什么類型的對象

  不帶泛型的方法,根據(jù)傳入的類型獲取對象時,需要強制轉換一下。

  所以我們在開發(fā)中,特別是在定義創(chuàng)建對象的方法時,一般都使用泛型來進行定義,從而避免后期的類型強轉。

  3. 可讀性和靈活性

  如下代碼:

public class GenericDemo6 {
public static void main(String[] args) {
//1.帶泛型的map集合
Map<String,Student> map = new HashMap<String,Student>();//使用泛型:可讀性強
map.put("01號",new Student("喬丹",23));//01號: 學生喬丹
map.put("02號",new Student("皮蓬",36));//02號: 學生皮蓬
//2.不帶泛型的map集合
Map map2 = new HashMap();//沒有泛型:可讀性差
map2.put(new Student("喬丹",23),"01號");//學生在前:編號在后
map2.put("02號",new Student("皮蓬",36));//學生在后:編號在前
}
}
class Student{
String username;
Integer age;

public Student(String username, Integer age) {
this.username = username;
this.age = age;
}
public Student() {
}
}

  通過這段代碼,我們可以看到泛型能規(guī)范代碼的書寫,讓我們的代碼可讀性更強,便于后期我們對數(shù)據(jù)的處理。

  如果我們使用不帶泛型的map集合保存數(shù)據(jù),那么map的數(shù)據(jù)保存很混亂,不便于后期對數(shù)據(jù)進行處理。

  闖關練習

  請描述下列哪些選項是泛型的優(yōu)點:

  A: 泛型可以避免類型強轉

  B: 泛型可以在編譯期間進行檢查

  C: 泛型可以提高代碼的可讀性

  D: 泛型可以提高代碼的靈活性

  答案:ABCD

好程序員公眾號

  • · 剖析行業(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(北京)

    預約報名

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

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

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

    預約報名

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

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

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