Generische untere ungebundene und obere begrenzte Platzhalter

import java.util.List;
import java.util.ArrayList;

interface Canine {}
class Dog implements Canine {}
public class Collie extends Dog {
    public static void main(String[] args){
        List<Dog> d = new ArrayList<Dog>();
        List<Collie> c = new ArrayList<Collie>();
        d.add(new Collie());
        c.add(new Collie());
        do1(d); do1(c);
        do2(d); do2(c);
    }
    static void do1(List<? extends Dog> d2){
        d2.add(new Collie());
        System.out.print(d2.size());
    }
    static void do2(List<? super Collie> c2){
        c2.add(new Collie());
        System.out.print(c2.size());
    }
}

Die Antwort auf diese Frage besagt, dass, wenn eine Methode einen generischen Platzhaltertyp verwendet, auf die Auflistung zugegriffen oder diese geändert werden kann, jedoch nicht auf beide. (Kathy und Bert)

Was heißt das 'Wenn eine Methode einen generischen Platzhaltertyp verwendet, kann auf die Auflistung zugegriffen oder diese geändert werden, jedoch nicht auf beide'?

Soweit ich weiß, hat die Methode do1List<? extends Dog> d2 Daher kann auf d2 nur zugegriffen, aber nicht geändert werden. Die Methode d2 hatList<? super Collie> c2 Auf c2 kann also zugegriffen und geändert werden, und es liegt kein Kompilierungsfehler vor.

Allgemeine Richtlinien

Antworten auf die Frage(5)

Ihre Antwort auf die Frage