首頁 >Java >java教程 >掌握 Java 泛型:帶有程式碼範例的綜合指南

掌握 Java 泛型:帶有程式碼範例的綜合指南

Linda Hamilton
Linda Hamilton原創
2025-01-07 06:27:49732瀏覽

1.了解Java泛型的基礎知識

Mastering Java Generics: A Comprehensive Guide with Code Examples

Java 泛型可讓您使用類型參數定義類別、介面和方法。這意味著您可以編寫適用於不同資料類型的程式碼,同時確保編譯時的類型安全。

1.1 什麼是泛型?

泛型是 Java 5 中引入的功能,可讓您使用其所操作的資料類型的佔位符來定義類別、介面或方法。這有助於建立可用於任何類型的類別和方法,同時仍提供編譯時類型安全性。

範例:

public class Box<T> {
    private T value;

    public void setValue(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }
}

在此範例中,T 是一個類型參數,當您建立 Box 實例時,可以將其替換為任何資料類型。

1.2 為什麼要使用泛型?

仿製藥有幾個好處:

  • 類型安全性:它們消除了強制轉換的需要,並透過在編譯時捕獲類型不匹配來減少運行時錯誤。
  • 程式碼可重複使用性:它們允許您建立可以處理不同資料類型的單一類別或方法。
  • 消除型別轉換:使用泛型減少了型別轉換的需要,使您的程式碼更乾淨且不易出錯。

範例:

沒有泛型:

List list = new ArrayList();
list.add("Hello");
String s = (String) list.get(0); // Casting needed

使用泛型:

List<String> list = new ArrayList<>();
list.add("Hello");
String s = list.get(0); // No casting needed

2. 在類別中使用泛型

泛型可以與類別一起使用,以確保類型安全性和靈活性。以下是如何在類別定義中有效地使用泛型。

2.1 泛型類別範例

考慮一個泛型類別 Pair,它包含兩個可能不同類型的值:

public class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() {
        return key;
    }

    public V getValue() {
        return value;
    }
}

在此範例中,K 和 V 是建立 Pair 實例時可以指定的類型參數。

使用範例:

Pair<String, Integer> pair = new Pair<>("Age", 30);
System.out.println("Key: " + pair.getKey() + ", Value: " + pair.getValue());

2.2 有界型別參數

有時,您可能想要限制可與泛型類別或方法一起使用的類型。有界類型參數可讓您指定一系列可接受的類型。

範例:

public class NumberUtils {
    public static <T extends Number> void printNumber(T number) {
        System.out.println("Number: " + number);
    }
}

這裡,T 僅限於 Number 的子類,例如 Integer、Double 等。

使用範例:

NumberUtils.printNumber(10); // Valid
NumberUtils.printNumber(10.5); // Valid

3. 方法中的泛型

泛型不限於類別。它們還可以在方法中使用來創建靈活且類型安全的方法。

3.1 通用方法範例

這是一個傳回兩個值中的最大值的方法:

public class Util {
    public static <T extends Comparable<T>> T max(T a, T b) {
        return a.compareTo(b) > 0 ? a : b;
    }
}

在這個方法中,T是一個型別參數,必須擴充Comparable,確保T可以比較。

使用範例:

public class Box<T> {
    private T value;

    public void setValue(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }
}

3.2 泛型中的通配符

通配符可讓您以更靈活的方式指定一系列可接受的類型。例如, ? extends T 表示擴展 T 的未知類型,而 ? super T 表示未知類型,它是 T 的超類型。

範例:

List list = new ArrayList();
list.add("Hello");
String s = (String) list.get(0); // Casting needed

使用範例:

List<String> list = new ArrayList<>();
list.add("Hello");
String s = list.get(0); // No casting needed

4. 結論

掌握Java泛型可以大幅增強程式碼的靈活性和安全性。透過了解如何在類別、方法中使用泛型以及通配符,您將能夠編寫更健壯且可重複使用的程式碼。如果您有任何疑問或需要進一步說明,請隨時在下面發表評論!

閱讀更多文章:掌握 Java 泛型:帶有程式碼範例的綜合指南

以上是掌握 Java 泛型:帶有程式碼範例的綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn