Java 泛型對於編寫類型安全、可重複使用的程式碼至關重要。 它們支援創建可以處理各種資料類型的類別、方法和接口,從而增強程式碼的穩健性和靈活性。本文使用購物車範例來說明泛型,該購物車範例儲存由自訂類別表示的不同水果類型。
Java 陣列是特定於類型的;一種類型的陣列不能容納另一種類型的元素:
<code class="language-java">String[] fruits = new String[3]; fruits[0] = "Apple"; // Correct fruits[1] = 123; // Compile-time error</code>
這種類型安全性是有益的,但陣列缺乏靈活性。 使用陣列創建各種水果(香蕉、蘋果、葡萄)的購物車需要繁瑣的手動類型處理。
泛型提供了一個解決方案:靈活且類型安全的資料結構。讓我們從自訂 Fruit 類別開始建立它。
我們將為 Banana、Apple 和 Grape 定義一個基底 Fruit
類別和子類,每個類別都有獨特的屬性。
<code class="language-java">// 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"); } }</code>
Fruit
類別是抽象的,提供通用功能(如 name
)並建立清晰的繼承結構。 如果需要多重繼承或更簡單的契約,則介面可能更可取。這值得進一步討論!
現在,讓我們使用泛型來建立一個 ShoppingCart
類別來保存任何水果類型,同時保持類型安全。
<code class="language-java">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()); } } }</code>
T extends Fruit
確保只能添加 Fruit
或其後代,防止類型錯誤。
讓我們看看如何將 ShoppingCart
與我們的水果物件一起使用。
<code class="language-java">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(); } }</code>
T
防止添加不正確的類型。 Fruit
類型,提高可重複使用性。 這個 Fruit
層次結構和 ShoppingCart
範例示範了 Java 泛型的強大功能和靈活性。 泛型增強了程式碼的清晰度和可維護性,使它們對於各個層級的 Java 開發人員來說都是無價的。
以上是了解 Java 中的泛型:帶有自訂類別的購物車範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!