北京北大青鳥學校學術部講解:Java類庫中的泛型(二)

      北京北大青鳥學校學術部講解:與非泛型代碼相互操作
      北京北大青鳥學校學術部專家表示:數百萬行現有代碼使用已經泛型化的Java類庫中的類,比如集合框架、Class 和 ThreadLocal。JDK 5.0 中的改進不要破壞所有這些代碼是很重要的,所以編譯器允許在不指定其類型參數的情況下使用泛型類。(北大青鳥課程

      當然,北京北大青鳥學校老師表示,以“舊方式”做事沒有新方式安全,因為忽略了編譯器準備提供的類型安全。如果試圖將 List<String> 傳遞給一個接受 List 的方法,它將能夠工作,但是編譯器將會發出一個可能喪失類型安全的警告,即所謂的“unchecked conversion(不檢查轉換)”警告。(北大青鳥課程

      沒有類型參數的泛型,比如聲明為 List 類型而不是 List<Something> 類型的變量,叫做原始類型。原始類型與參數化類型的任何實例化是賦值兼容的,但是這樣的賦值會生成 unchecked-conversion 警告。(北大青鳥課程)

      為了消除一些 unchecked-conversion 警告,假設您不準備泛型化所有的代碼,您可以使用通配符類型參數。使用 List<?> 而不使用 List。List 是原始類型;List<?> 是具有未知類型參數的泛型。編譯器將以不同的方式對待它們,并很可能發出更少的警告。

      北京北大青鳥學校老師介紹,無論在哪種情況下,編譯器在生成字節碼時都會生成強制類型轉換,所以生成的字節碼在每種情況下都不會比沒有泛型時更不安全。如果您設法通過使用原始類型或類文件來破壞類型安全,就會得到與不使用泛型時得到的相同的 ClassCastException 或 ArrayStoreException。(北大青鳥課程


      已檢查集合

      作為從原始集合類型遷移到泛型集合類型的幫助,集合框架添加了一些新的集合包裝器,以便為一些類型安全bug提供早期警告。就像 Collections.unmodifiableSet() 工廠方法用一個不允許任何修改的 Set 包裝一個現有 Set 一樣,Collections.checkedSet()(以及 checkedList() 和 checkedMap())工廠方法創建一個包裝器(或者視圖)類,以防止您將錯誤類型的變量放在集合中。(北大青鳥課程

      checkedXxx() 方法都接受一個類常量作為參數,所以它們可以(在運行時)檢查這些修改是允許的。典型的實現可能像下面這樣:

      public class Collections {
      public static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type ) {
          return new CheckedCollection<E>(c, type);
      }
      private static class CheckedCollection<E> implements Collection<E> {
          private final Collection<E> c;
          private final Class<E> type;
          CheckedCollection(Collection<E> c, Class<E> type) {
            this.c = c;
            this.type = type;
          }
          public boolean add(E o) {
            if (!type.isInstance(o))
              throw new ClassCastException();
            else
              return c.add(o);
          }
      }
      } (北大青鳥課程
      北京北大青鳥學校提供

      北大青鳥網上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 一区二区在线视频| 亚洲一区二区三区免费| 亚洲第一区精品观看| 久久久久99人妻一区二区三区| 日韩精品一区在线| 少妇无码一区二区三区免费| 濑亚美莉在线视频一区| 亚洲综合色一区二区三区小说| 无码人妻少妇色欲AV一区二区| 日韩av片无码一区二区三区不卡| 美女视频一区二区| 亚洲AV无码一区二区三区鸳鸯影院 | 小泽玛丽无码视频一区| 人妻体内射精一区二区| 波多野结衣一区二区三区高清av| 大帝AV在线一区二区三区| 日韩最新视频一区二区三| 亚洲Av永久无码精品一区二区| 四虎在线观看一区二区| 欧美日韩精品一区二区在线观看| 精品一区二区三区视频| 精品一区二区AV天堂| 中文字幕一区二区区免| 亚洲国产国产综合一区首页| 日韩电影一区二区| 国产香蕉一区二区三区在线视频| 九九无码人妻一区二区三区| 毛片一区二区三区无码| 天海翼一区二区三区高清视频| 日本人的色道www免费一区| 亚洲国产激情一区二区三区| 亚洲人AV永久一区二区三区久久| 国产精品99无码一区二区| 日本免费一区二区三区| 波多野结衣中文一区二区免费| 国产一区二区三区在线看片| 精品人妻少妇一区二区三区在线 | 无码人妻精品一区二区三区99仓本 | 亚洲国产欧美日韩精品一区二区三区| 一区二区三区在线观看| 日本一区二区三区不卡视频中文字幕 |