<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 功能強大 支持多語言、二開方便! 廣告
                ?# 第四章第三節--4 泛型擦拭法 標簽(空格分隔): 廖雪峰 --- ## java泛型的實現方式--擦拭法 在編譯器編譯的時候,編譯器實際上把所有的泛型類型`T,`統一視為`Object`類型.也就是說虛擬機其實對泛型并不關心.而對泛型的處理過程其實發生在編譯階段. ![編譯器的處理過程](http://p0b921qfc.bkt.clouddn.com/18-5-18/98406482.jpg) 上面是原始代碼,下面是編譯器實際處理的代碼.編譯器實際上把類型`T`視為`Object`.然后在需要的時候會根據T類型進行安全的強制轉移.所以Java的泛型實際上是由編譯器在編譯的時候進行的,編譯器內部永遠把所有類型視為`Object`. ## 擦拭法帶來的局限. - `<T>`不能是基本數據類型,例如`int`. 因為在編譯器的內部把`T`視為`Object`,而`Object`是無法等于基本數據類型的. - 無法獲取帶泛型的`Class`,無法用`==`或者`instanceof`判斷是否相等. ![無法獲取Class](http://p0b921qfc.bkt.clouddn.com/18-5-18/22136504.jpg) 所有的泛型實例,無論泛型的T是什么。`getClass`返回的`Class`都是同一個`Class`。 - 泛型的方法中不能有和`Object`本身方法重名的方法. ## 泛型的繼承 - 繼承泛型必須指明泛型參數,而子類中也就只能存放泛型參數中的類型. ![繼承](http://p0b921qfc.bkt.clouddn.com/18-5-18/13404178.jpg) - 可以通過子類獲取父類的泛型類型. ![通過子類獲取泛型的泛型參數類型](http://p0b921qfc.bkt.clouddn.com/18-5-18/1806342.jpg) ## 小節小結 - Java的泛型采用擦拭法的方式實現. - 擦拭法決定了泛型<T>: 1. 不能是基本類型,例如int 2. 不能獲取待泛型類型的Class,例如`Pair<String>.class` 3. 不能判斷帶泛型類型的類型,例如: `x instanceof Pair<String>` 4. 不能實例化 T的類型 例如: `new T()`; 5. 泛型方法要防止重復定義方法,例如:`pulic boolean equals(T obj)` - 子類可以通過獲取泛型類型的類型參數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>

                              哎呀哎呀视频在线观看