溫馨提示×

Java泛型extends用法是什么

小樊
81
2024-09-29 22:48:15
欄目: 編程語言

在Java中,extends關(guān)鍵字用于定義泛型的上界。它限制了泛型類型參數(shù)可以接受的實際類型。當使用泛型時,你通常會指定一個上界,以確保類型安全。

extends關(guān)鍵字在泛型中的用法有兩種情況:

  1. 限制泛型類型參數(shù)必須是某個類的子類或?qū)崿F(xiàn)某個接口。
  2. 限制泛型類型參數(shù)必須是某個類的子類或?qū)崿F(xiàn)某個接口,同時還可以指定多個上界。

以下是兩種情況的示例:

情況1:限制泛型類型參數(shù)必須是某個類的子類或?qū)崿F(xiàn)某個接口

public class GenericBox<T extends Number> {
    private T value;

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

    public T getValue() {
        return value;
    }
}

在這個例子中,GenericBox類是一個泛型類,它接受一個類型參數(shù)T,并且T必須是Number類的子類或?qū)崿F(xiàn)Number接口。這意味著GenericBox可以用于任何Number類型,如Integer、Double等,但不能用于非Number類型。

情況2:限制泛型類型參數(shù)必須是某個類的子類或?qū)崿F(xiàn)某個接口,同時還可以指定多個上界

public class MultiBoundGeneric<T extends Number & Comparable<T>> {
    private T value;

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

    public T getValue() {
        return value;
    }
}

在這個例子中,MultiBoundGeneric類是一個泛型類,它接受一個類型參數(shù)T,并且T必須是Number類的子類或?qū)崿F(xiàn)Number接口,同時T還必須是Comparable<T>接口的實現(xiàn)類。這意味著MultiBoundGeneric只能用于實現(xiàn)了NumberComparable<T>接口的類型,如Integer、Double等。

0