亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

Java泛型extends與super的區別

小樊
82
2024-09-29 22:51:15
欄目: 編程語言

在Java中,泛型的extends和super關鍵字具有不同的作用和意義。

  1. extends:

extends關鍵字用于限制泛型參數的上界。它表示該泛型參數必須是給定類型或其子類型。這意味著,如果你有一個泛型類或方法,你可以使用extends來指定該泛型參數必須是某個類或接口的子類型。這有助于確保類型安全,并避免在運行時出現ClassCastException。

例如,假設你有一個泛型類Box,它可以容納任何類型的對象。但是,你希望確保Box只能容納那些實現了Comparable接口的對象。在這種情況下,你可以使用extends關鍵字來限制泛型參數T必須是Comparable或其子類型。

public class Box<T extends Comparable<T>> {
    private T item;

    public void set(T item) {
        this.item = item;
    }

    public T get() {
        return item;
    }

    public int compareTo(Box<T> other) {
        return item.compareTo(other.item);
    }
}
  1. super:

super關鍵字用于限制泛型參數的下界。它表示該泛型參數必須是給定類型或其父類型。這意味著,如果你有一個泛型類或方法,你可以使用super來指定該泛型參數必須是某個類或接口的父類型。這有助于確保類型安全,并避免在運行時出現ClassCastException。

然而,需要注意的是,Java泛型中的super關鍵字與類中的super關鍵字有所不同。在類中,super表示父類,用于調用父類的方法或訪問父類的成員變量。而在泛型中,super關鍵字用于限制泛型參數的下界,而不是表示父類。

例如,假設你有一個泛型方法,該方法接受一個列表作為參數,并返回該列表中的所有元素的總和。你可以使用super關鍵字來限制泛型參數List必須是Number或其子類型,以便在該方法中使用Number類的方法,如intValue()、doubleValue()等。

public static double sum(List<? super Number> list) {
    double sum = 0;
    for (Number n : list) {
        sum += n.doubleValue();
    }
    return sum;
}

在這個例子中,List<? super Number>表示一個列表,其元素類型可以是Number或其任何父類型(如Integer、Double等)。這使得該方法可以用于任何類型的Number列表,并確保類型安全。

0
淳安县| 都江堰市| 新平| 曲阳县| 安化县| 延庆县| 云阳县| 元朗区| 洛宁县| 武定县| 方正县| 天门市| 措美县| 巧家县| 康马县| 石渠县| 盈江县| 许昌市| 忻城县| 安图县| 九龙城区| 临夏县| 湘阴县| 红安县| 鄂伦春自治旗| 尚义县| 江口县| 五河县| 拉孜县| 凌海市| 商水县| 雷波县| 密云县| 泰顺县| 建湖县| 清新县| 日土县| 阿图什市| 抚松县| 巩义市| 沁阳市|