<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ?# 第四章第三節--1泛型 標簽(空格分隔): 廖雪峰 --- ## 為什么要使用泛型 例子:JDK提供的`ArrayList`,可以看做是一個可變的數組,其特點為比數組操作起來更方便. ![ArrayList例子](http://p0b921qfc.bkt.clouddn.com/18-5-18/42287307.jpg) 在`ArrayList`的內容是使用一個`Object[]`數組來存放所有的數據,當不實用使用泛型直接來存儲`String`類型的時候,在代碼中需要進行強制轉型,如下圖所示,這樣寫代碼的時候就很不方便,容易出現錯誤,在打印的時候也無法統一執行. ![不是泛型](http://p0b921qfc.bkt.clouddn.com/18-5-18/62922144.jpg) 若為每種`Object`都單獨的編寫一個`ArrayList`,這樣便不用強制轉型.可是這樣一來就需要對于每種不同的類型都重新構建一個`Arraylist`,JDK中原本的數據類型就有上千種,所以這種方法也是不可行的. ![重寫IntegerArrayList](http://p0b921qfc.bkt.clouddn.com/18-5-18/33992402.jpg) 最好的思路便是重用一套代碼,把數據類型作為參數的形式傳遞進去.這邊是泛型的雛形了. 這樣就可以實現編寫一次代碼,實現各種類型的`ArrayList`. ![泛型](http://p0b921qfc.bkt.clouddn.com/18-5-18/24897619.jpg) ## 什么是泛型 泛型就是一種模版,例如`ArrayList<T>` - 在代碼中為用到的類創建對應的`ArrayList<類型>`代碼表示為`ArrayList<String> list = new ArrayList<String>()`; - 編譯器將對這種類型做檢測,`list.add("hello");list.add(123);//complie error.` ## 泛型的繼承關系 `ArrayList<T>`實現的是`List<T>`接口,我們可以向上轉型. ![向上轉型](http://p0b921qfc.bkt.clouddn.com/18-5-18/3334175.jpg) 注意:`ArrayList`可以向上轉型為`List`,不過`ArrayList<Integer>`不能向上轉型為`ArrayList<Number>`/`List<Number>` ![object不能向上轉型的原因](http://p0b921qfc.bkt.clouddn.com/18-5-18/3334175.jpg) 如果把`ArrayList<Integer>`向上轉型為`ArrayList<Number>`,那么就可以添加`float`類型,如果添加`float`類型之后,打印的時候便又出現類型不能確定的問題,導致出錯. ## 小節小結 - 泛型就是編寫模版代碼來適應任意類型.(把類型按照參數的形式傳出去) - 不必對類型進行強制轉換. - 編譯器在添加的時候便對元素進行檢查. - 注意泛型的繼承關系.可以把`ArrayList<T>`向上轉型為`List<T>`,不能把`ArrayList<T>`向上轉為`ArrayList<T的父類>`或者`List<T的父類>`
                  <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>

                              哎呀哎呀视频在线观看