北京北大青鳥學(xué)校學(xué)術(shù)部講解:Java泛型用法的例子

      北京北大青鳥學(xué)校學(xué)術(shù)老師介紹:泛型的許多最佳例子都來(lái)自集合框架,因?yàn)榉盒妥尨蠹以诒4嬖诩现械脑厣现付愋图s束。考慮這個(gè)使用 Map 類的例子,其中涉及一定程度的優(yōu)化,即 Map.get() 返回的結(jié)果將確實(shí)是一個(gè) String:(北大青鳥課程


      Map m = new HashMap();
      m.put("key", "blarg");
      String s = (String) m.get("key");


      北京北大青鳥學(xué)校學(xué)術(shù)老師介紹:如果有人已經(jīng)在映射中放置了不是 String 的其他東西,上面的代碼將會(huì)拋出 ClassCastException。泛型允許您表達(dá)這樣的類型約束,即 m 是一個(gè)將 String 鍵映射到 String 值的 Map。這可以消除代碼中的強(qiáng)制類型轉(zhuǎn)換,同時(shí)獲得一個(gè)附加的類型檢查層,這個(gè)檢查層可以防止有人將錯(cuò)誤類型的鍵或值保存在集合中。(北大青鳥課程


      下面的代碼示例展示了 JDK 5.0 中集合框架中的 Map 接口的定義的一部分:


      public interface Map<K, V> {
      public void put(K key, V value);
      public V get(K key);
      }(北大青鳥課程

      注意該接口的兩個(gè)附加物:

      類型參數(shù) K 和 V 在類級(jí)別的規(guī)格說(shuō)明,表示在聲明一個(gè) Map 類型的變量時(shí)指定的類型的占位符。

      在 get()、put() 和其他方法的方法簽名中使用的 K 和 V。

      為了贏得使用泛型的好處,必須在定義或?qū)嵗?Map 類型的變量時(shí)為 K 和 V 提供具體的值。以一種相對(duì)直觀的方式做這件事:

      Map<String, String> m = new HashMap<String, String>();
      m.put("key", "blarg");
      String s = m.get("key");(北大青鳥課程

      當(dāng)使用 Map 的泛型化版本時(shí),您不再需要將 Map.get() 的結(jié)果強(qiáng)制類型轉(zhuǎn)換為 String,因?yàn)榫幾g器知道 get() 將返回一個(gè) String。

      北京北大青鳥學(xué)校學(xué)術(shù)老師提出,在使用泛型的版本中并沒(méi)有減少鍵盤錄入;實(shí)際上,比使用強(qiáng)制類型轉(zhuǎn)換的版本需要做更多鍵入。使用泛型只是帶來(lái)了附加的類型安全。因?yàn)榫幾g器知道關(guān)于您將放進(jìn) Map 中的鍵和值的類型的更多信息,所以類型檢查從執(zhí)行時(shí)挪到了編譯時(shí),這會(huì)提高可靠性并加快開發(fā)速度。(北大青鳥課程


      向后兼容

      在 Java 語(yǔ)言中引入泛型的一個(gè)重要目標(biāo)就是維護(hù)向后兼容。盡管 JDK 5.0 的標(biāo)準(zhǔn)類庫(kù)中的許多類,比如集合框架,都已經(jīng)泛型化了,但是使用集合類(比如 HashMap 和 ArrayList)的現(xiàn)有代碼將繼續(xù)不加修改地在 JDK 5.0 中工作。當(dāng)然,沒(méi)有利用泛型的現(xiàn)有代碼將不會(huì)贏得泛型的類型安全好處。(北京北大青鳥學(xué)校編輯,未完待續(xù))

       

      北大青鳥網(wǎng)上報(bào)名
      北大青鳥招生簡(jiǎn)章
      主站蜘蛛池模板: 精品国产日韩亚洲一区| 亚洲一区二区三区高清不卡| 亚洲永久无码3D动漫一区| 亚欧成人中文字幕一区| 视频一区二区在线播放| 无码一区二区三区AV免费| 相泽南亚洲一区二区在线播放 | 日本大香伊一区二区三区| 精品一区二区三区四区在线播放| 不卡无码人妻一区三区音频| 国产一区二区三区手机在线观看| 日韩精品一区二区三区中文精品 | 亚洲午夜精品一区二区| 久久亚洲中文字幕精品一区四 | 亚洲啪啪综合AV一区| 国产vr一区二区在线观看| 国产丝袜无码一区二区视频| 无码人妻一区二区三区兔费| 91福利视频一区| 麻豆AV一区二区三区久久| 日本内射精品一区二区视频| 久久一区二区三区免费播放| 无码人妻精品一区二区三区久久| 无码人妻一区二区三区免费看| 中文无码精品一区二区三区| 亚洲啪啪综合AV一区| 日韩电影一区二区三区| 国产福利精品一区二区| 亚洲乱码一区av春药高潮| 亚洲一区二区三区高清在线观看| 在线精品一区二区三区| 国产精品美女一区二区| 成人国产精品一区二区网站| 免费一区二区无码东京热| 久久精品无码一区二区三区 | 久久国产三级无码一区二区| 国产亚洲一区二区三区在线| 日韩人妻一区二区三区免费| 亚洲中文字幕一区精品自拍| 精品福利一区3d动漫| 少妇无码AV无码一区|