<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之旅 廣告
                # 第二十章 泛型 > 普通的類和方法只能使用特定的類型:基本數據類型或類類型。如果編寫的代碼需要應用于多種類型,這種嚴苛的限制對代碼的束縛就會很大。 多態是一種面向對象思想的泛化機制。你可以將方法的參數類型設為基類,這樣的方法就可以接受任何派生類作為參數,包括暫時還不存在的類。這樣的方法更通用,應用范圍更廣。在類內部也是如此,在任何使用特定類型的地方,基類意味著更大的靈活性。除了 `final` 類(或只提供私有構造函數的類)任何類型都可被擴展,所以大部分時候這種靈活性是自帶的。 拘泥于單一的繼承體系太過局限,因為只有繼承體系中的對象才能適用基類作為參數的方法中。如果方法以接口而不是類作為參數,限制就寬松多了,只要實現了接口就可以。這給予調用方一種選項,通過調整現有的類來實現接口,滿足方法參數要求。接口可以突破繼承體系的限制。 即便是接口也還是有諸多限制。一旦指定了接口,它就要求你的代碼必須使用特定的接口。而我們希望編寫更通用的代碼,能夠適用“非特定的類型”,而不是一個具體的接口或類。 這就是泛型的概念,是 Java 5 的重大變化之一。泛型實現了*參數化類型*,這樣你編寫的組件(通常是集合)可以適用于多種類型。“泛型”這個術語的含義是“適用于很多類型”。編程語言中泛型出現的初衷是通過解耦類或方法與所使用的類型之間的約束,使得類或方法具備最寬泛的表達力。隨后你會發現 Java 中泛型的實現并沒有那么“泛”,你可能會質疑“泛型”這個詞是否合適用來描述這一功能。 如果你從未接觸過參數化類型機制,你會發現泛型對 Java 語言確實是個很有益的補充。在你實例化一個類型參數時,編譯器會負責轉型并確保類型的正確性。這是一大進步。 然而,如果你了解其他語言(例如 C++ )的參數化機制,你會發現,Java 泛型并不能滿足所有的預期。使用別人創建好的泛型相對容易,但是創建自己的泛型時,就會遇到很多意料之外的麻煩。 這并不是說 Java 泛型毫無用處。在很多情況下,它可以使代碼更直接更優雅。不過,如果你見識過那種實現了更純粹的泛型的編程語言,那么,Java 可能會令你失望。本章會介紹 Java 泛型的優點與局限。我會解釋 Java 的泛型是如何發展成現在這樣的,希望能夠幫助你更有效地使用這個特性。[^1] ### 與 C++ 的比較 Java 的設計者曾說過,這門語言的靈感主要來自 C++ 。盡管如此,學習 Java 時基本不用參考 C++ 。 但是,Java 中的泛型需要與 C++ 進行對比,理由有兩個:首先,理解 C++ *模板*(泛型的主要靈感來源,包括基本語法)的某些特性,有助于理解泛型的基礎理念。同時,非常重要的一點是,你可以了解 Java 泛型的局限是什么,以及為什么會有這些局限。最終的目標是明確 Java 泛型的邊界,讓你成為一個程序高手。只有知道了某個技術不能做什么,你才能更好地做到所能做的(部分原因是,不必浪費時間在死胡同里)。 第二個原因是,在 Java 社區中,大家普遍對 C++ 模板有一種誤解,而這種誤解可能會令你在理解泛型的意圖時產生偏差。 因此,本章中會介紹少量 C++ 模板的例子,僅當它們確實可以加深理解時才會引入。 <!-- Simple Generics -->
                  <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>

                              哎呀哎呀视频在线观看