Java 泛型對於編寫類型安全、可重複使用的程式碼至關重要。 它們支援創建可以處理各種資料類型的類別、方法和接口,從而增強程式碼的穩健性和靈活性。本文使用購物車範例來說明泛型,該購物車範例儲存由自訂類別表示的不同水果類型。
為什麼是泛型?數組的局限性
Java 陣列是特定於類型的;一種類型的陣列不能容納另一種類型的元素:
String[] fruits = new String[3]; fruits[0] = "Apple"; // Correct fruits[1] = 123; // Compile-time error
這種類型安全性是有益的,但陣列缺乏靈活性。 使用陣列創建各種水果(香蕉、蘋果、葡萄)的購物車需要繁瑣的手動類型處理。
泛型提供了一個解決方案:靈活且類型安全的資料結構。讓我們從自訂 Fruit 類別開始建立它。
第 1 步:定義水果類
我們將為 Banana、Apple 和 Grape 定義一個基底 Fruit
類別和子類,每個類別都有獨特的屬性。
// Base class for fruits public abstract class Fruit { private String name; public Fruit(String name) { this.name = name; } public String getName() { return name; } } // Specific fruit classes public class Banana extends Fruit { public Banana() { super("Banana"); } } public class Apple extends Fruit { public Apple() { super("Apple"); } } public class Grape extends Fruit { public Grape() { super("Grape"); } }
抽象類別基本原理
Fruit
類別是抽象的,提供通用功能(如 name
)並建立清晰的繼承結構。 如果需要多重繼承或更簡單的契約,則介面可能更可取。這值得進一步討論!
第 2 步:建立通用購物車
現在,讓我們使用泛型來建立一個 ShoppingCart
類別來保存任何水果類型,同時保持類型安全。
import java.util.ArrayList; public class ShoppingCart<T extends Fruit> { // Restricts to Fruit and subclasses private ArrayList<T> items = new ArrayList<>(); public void addItem(T item) { items.add(item); } public void removeItem(T item) { items.remove(item); } public void displayItems() { for (T item : items) { System.out.println(item.getName()); } } }
T extends Fruit
確保只能添加 Fruit
或其後代,防止類型錯誤。
第 3 步:使用購物車
讓我們看看如何將 ShoppingCart
與我們的水果物件一起使用。
public class Main { public static void main(String[] args) { ShoppingCart<Fruit> fruitCart = new ShoppingCart<>(); // Adding fruits fruitCart.addItem(new Banana()); fruitCart.addItem(new Apple()); fruitCart.addItem(new Grape()); // Displaying contents System.out.println("Shopping Cart:"); fruitCart.displayItems(); // Removing an item fruitCart.removeItem(new Apple()); // Removal based on object equality (equals() can be overridden) System.out.println("\nAfter removing Apple:"); fruitCart.displayItems(); } }
泛型的優點
-
類型安全: 限制
T
防止添加不正確的類型。 -
彈性: 購物車可處理任何
Fruit
類型,提高可重複使用性。 - 無轉換:檢索項目不需要轉換,減少執行階段錯誤。
結論
這個 Fruit
層次結構和 ShoppingCart
範例示範了 Java 泛型的強大功能和靈活性。 泛型增強了程式碼的清晰度和可維護性,使它們對於各個層級的 Java 開發人員來說都是無價的。
?參考文獻
- Java 泛型文件
- 高效率 Java (Joshua Bloch)
?與我聯絡
- 領英
- GitHub
- 投資組合
以上是了解 Java 中的泛型:帶有自訂類別的購物車範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver Mac版
視覺化網頁開發工具

Dreamweaver CS6
視覺化網頁開發工具