泛型
在任何重要的軟件項目中,bug都是不可避免的,仔細的規劃、編程和測試可以幫助減少它們的普遍性,但是它們總會在某個地方以某種方式潛入你的代碼,隨著新功能的引入以及你的代碼庫在規模和復雜性方面的增長,這一點變得尤為明顯。
幸運的是,一些錯誤比其他錯誤更容易被發現,例如,編譯時錯誤可以在早期檢測到,你可以使用編譯器的錯誤消息來確定問題所在并立即修復它。但是,運行時錯誤可能會更成問題,它們并不總是立刻浮出水面,當它們出現時,它可能在程序中的某個點上,與問題的實際原因相去甚遠。
泛型通過在編譯時檢測到更多錯誤來增加代碼的穩定性。
為什么要使用泛型?簡而言之,泛型使類型(類和接口)在定義類、接口和方法時成為參數,與方法聲明中使用的更熟悉的形式參數非常相似,類型參數提供了一種使你可以使用不同的輸入重用相同的代碼的方法,不同之處在于形式參數的輸入是值,而類型參數的輸入是類型。
使用泛型的代碼比非泛型代碼有許多好處:
在編譯時進行更強大的類型檢查。
Java編譯器對泛型代碼應用強類型檢查,并在代碼違反類型安全時發出錯誤,修復編譯時錯誤比修復運行時錯誤更容易,這很難找到。
消除數據類型轉換
以下沒有泛型的代碼片段需要強制轉換:
List list = new ArrayList(); list.add("hello"); String s = (String) list.get(0);
當重寫為使用泛型時,代碼不需要強制轉換:
Listlist = new ArrayList (); list.add("hello"); String s = list.get(0); // no cast
使程序員能夠實現通用算法。
通過使用泛型,程序員可以實現通用算法,這些算法可以處理不同類型的集合,可以自定義,并且類型安全且易于閱讀。
上一篇:自動裝箱和拆箱 下一篇:泛型類型文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72928.html
Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續版本中引入的改進。 Java教程是希望使用Java編程語言創建應用程序的程序員的實用指南,其中包括數百個完整的工作示例和數十個課程,相關課程組被組織成教程。 覆蓋基礎知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術和安裝Java開發軟件并使用...
泛型類型 泛型類型是通過類型參數化的泛型類或接口,修改以下Box類以演示此概念。 一個簡單的Box類 首先檢查一個對任何類型的對象進行操作的非泛型Box類,它只需要提供兩個方法:set,它將一個對象添加到box中,get,它將檢索它: public class Box { private Object object; public void set(Object object) ...
類型推斷 類型推斷是Java編譯器查看每個方法調用和相應聲明的能力,以確定使調用適用的類型參數,推理算法確定參數的類型,如果可用,還確定分配或返回結果的類型,最后,推理算法嘗試查找適用于所有參數的最具體類型。 為了說明最后一點,在下面的示例中,推斷確定傳遞給pick方法的第二個參數是Serializable類型: static T pick(T a1, T a2) { return a2; } ...
泛型原始類型 原始類型是沒有任何類型參數的泛型類或接口的名稱,例如,給定Box泛型類: public class Box { public void set(T t) { /* ... */ } // ... } 要創建參數化類型的Box,請為形式類型參數T提供實際類型參數: Box intBox = new Box(); 如果省略實際的類型參數,則創建一個原始類型Box: Box...
泛型的限制 要有效地使用Java泛型,必須考慮以下限制: 無法使用基元類型實例化泛型類型 無法創建類型參數的實例 無法聲明類型為類型參數的靜態字段 無法對參數化類型使用強制類型轉換或instanceof 無法創建參數化類型的數組 無法創建、捕獲或拋出參數化類型的對象 無法重載將每個重載的形式參數類型擦除為相同原始類型的方法 無法使用基元類型實例化泛型類型 考慮以下參數化類型: class P...
閱讀 2520·2023-04-25 14:54
閱讀 595·2021-11-24 09:39
閱讀 1804·2021-10-26 09:51
閱讀 3846·2021-08-21 14:10
閱讀 3477·2021-08-19 11:13
閱讀 2692·2019-08-30 14:23
閱讀 1804·2019-08-29 16:28
閱讀 3349·2019-08-23 13:45