<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 動態類型安全 因為可以向 Java 5 之前的代碼傳遞泛型集合,所以舊式代碼仍舊有可能會破壞你的集合。Java 5 的 **java.util.Collections** 中有一組便利工具,可以解決在這種情況下的類型檢查問題,它們是:靜態方法 `checkedCollection()` 、`checkedList()`、 `checkedMap()` 、 `checkedSet()` 、`checkedSortedMap()`和 `checkedSortedSet()`。這些方法每一個都會將你希望動態檢查的集合當作第一個參數接受,并將你希望強制要求的類型作為第二個參數接受。 受檢查的集合在你試圖插入類型不正確的對象時拋出 **ClassCastException** ,這與泛型之前的(原生)集合形成了對比,對于后者來說,當你將對象從集合中取出時,才會通知你出現了問題。在后一種情況中,你知道存在問題,但是不知道罪魁禍首在哪里,如果使用受檢查的集合,就可以發現誰在試圖插入不良對象。 讓我們用受檢查的集合來看看“將貓插入到狗列表中”這個問題。這里,`oldStyleMethod()` 表示遺留代碼,因為它接受的是原生的 **List** ,而 **@SuppressWarnings(“unchecked”)** 注解對于壓制所產生的警告是必需的: ```java // generics/CheckedList.java // Using Collection.checkedList() import typeinfo.pets.*; import java.util.*; public class CheckedList { @SuppressWarnings("unchecked") static void oldStyleMethod(List probablyDogs) { probablyDogs.add(new Cat()); } public static void main(String[] args) { List<Dog> dogs1 = new ArrayList<>(); oldStyleMethod(dogs1); // Quietly accepts a Cat List<Dog> dogs2 = Collections.checkedList( new ArrayList<>(), Dog.class); try { oldStyleMethod(dogs2); // Throws an exception } catch(Exception e) { System.out.println("Expected: " + e); } // Derived types work fine: List<Pet> pets = Collections.checkedList( new ArrayList<>(), Pet.class); pets.add(new Dog()); pets.add(new Cat()); } } /* Output: Expected: java.lang.ClassCastException: Attempt to insert class typeinfo.pets.Cat element into collection with element type class typeinfo.pets.Dog */ ``` 運行這個程序時,你會發現插入一個 **Cat** 對于 **dogs1** 來說沒有任何問題,而 **dogs2** 立即會在這個錯誤類型的插入操作上拋出一個異常。還可以看到,將導出類型的對象放置到將要檢查基類型的受檢查容器中是沒有問題的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看