Java中super關(guān)鍵字在泛型中的應(yīng)用

小樊
123
2024-08-02 21:37:14

在Java中,super關(guān)鍵字可以用于泛型中表示某個(gè)類(lèi)的父類(lèi)類(lèi)型。通常情況下,super關(guān)鍵字用于泛型的上界限定。例如,如果我們有一個(gè)泛型類(lèi)GenericClass<T>,我們可以使用<? super T>來(lái)表示T的父類(lèi)類(lèi)型。

public class GenericClass<T> {
    private T value;

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

    public T getValue() {
        return value;
    }

    public void printSuperType(List<? super Integer> list) {
        System.out.println(list);
    }
}

在上面的例子中,printSuperType方法接受一個(gè)List類(lèi)型的參數(shù),該List中存儲(chǔ)的元素必須是Integer的父類(lèi)。這樣我們就可以傳入Integer或其父類(lèi)的List實(shí)例作為參數(shù)。

public static void main(String[] args) {
    GenericClass<Integer> generic = new GenericClass<>();
    
    List<Number> numberList = new ArrayList<>();
    numberList.add(10);
    numberList.add(20);

    generic.printSuperType(numberList);

    List<Object> objectList = new ArrayList<>();
    objectList.add("Hello");
    objectList.add("World");

    generic.printSuperType(objectList);
}

在上面的示例中,我們實(shí)例化了一個(gè)存儲(chǔ)Integer類(lèi)型的GenericClass對(duì)象,然后分別傳入了存儲(chǔ)Number和Object類(lèi)型的List實(shí)例作為參數(shù)調(diào)用printSuperType方法。這樣就可以靈活地處理不同類(lèi)型的父類(lèi)對(duì)象。

0