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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 通配符和邊界 ![](https://img.kancloud.cn/f5/54/f554e61a785930a89cd057acd82c4e5d_499x658.png) ### T<? super B> 對于這個泛型,?代表容器里的元素類型,由于只規定了元素必須是B的超類,導致元素沒有明確統一的“根”(除了Object這個必然的根),所以這個泛型你其實無法使用它,對吧,除了把元素強制轉成Object。所以,對把參數寫成這樣形態的函數,你函數體內,只能對這個泛型做插入操作,而無法讀 ### T<? extends B> 由于指定了B為所有元素的“根”,你任何時候都可以安全的用B來使用容器里的元素,但是插入有問題,由于供奉B為祖先的子樹有很多,不同子樹并不兼容,由于實參可能來自于任何一顆子樹,所以你的插入很可能破壞函數實參,所以,對這種寫法的形參,禁止做插入操作,只做讀取 ### PECS 最后看一下什么是PECS(Producer Extends Consumer Super)原則,已經很好理解了: * 頻繁往外讀取內容的,適合用上界Extends。 * 經常往里插入的,適合用下界Super ## 類型擦除 大家都知道,Java的泛型是偽泛型,這是因為Java在編譯期間,所有的泛型信息都會被擦掉,正確理解泛型概念的首要前提是理解類型擦除。Java的泛型基本上都是在編譯器這個層次上實現的,在生成的字節碼中是不包含泛型中的類型信息的,使用泛型的時候加上類型參數,在編譯器編譯的時候會去掉,這個過程成為**類型擦除**。 如在代碼中定義`List<Object>`和`List<String>`等類型,在編譯后都會變成`List`,JVM看到的只是`List`,而由泛型附加的類型信息對JVM是看不到的。Java編譯器會在編譯時盡可能的發現可能出錯的地方,但是仍然無法在運行時刻出現的類型轉換異常的情況,類型擦除也是 Java 的泛型與 C++ 模板機制實現方式之間的重要區別。 ### 優點 避免過多的創建類而造成的運行時的過度消耗。 ## java補救 1、先檢查再編譯以及編譯的對象和引用傳遞問題 ### Json遇到泛型 利用`TypeReference`指定泛型中的類型, 就可以順序反序列化成功,并且 集合中的對象也轉換過來了。 ## 推薦閱讀 [java 泛型詳解-絕對是對泛型方法講解最詳細的,沒有之一](https://blog.csdn.net/s10461/article/details/53941091) [Java 泛型通配符?解惑](https://blog.csdn.net/baple/article/details/25056169) [Java泛型類型擦除以及類型擦除帶來的問題](https://www.cnblogs.com/wuqinglong/p/9456193.html)
                  <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>

                              哎呀哎呀视频在线观看