Java Generics WildCard Pergunta: List <? estende A>

Digamos que eu tenha as seguintes classes: Veículo, Carro e Nave Espacial:

class Vehicle{

    void rideVehicle(Vehicle v){
        System.out.println("I am riding a vehicle!");
    }

}

class Car extends Vehicle{
    void rideVehicle(Vehicle c){
        System.out.println("I am riding a car!");
    }
}


class SpaceShip extends Vehicle{
    void rideVehicle(Vehicle c){
        System.out.println("I am riding a spaceship!");
    }

}

e escrevo esse método addCars:

private static void addCars(List<? extends Vehicle> vcls){
        vcls.add(new Car());
        vcls.add(new Car());
        vcls.add(new Car());

    }

Por que recebo um erro de tempo de compilação? Entendo que a Lista é um supertipo de Lista para qualquer X que estenda o Veículo. direita

Obrigad

Edit: o erro que recebo (tempo de compilação): O método add (captura nº 2 de? Estende Vehicle) no tipo List não é aplicável aos argumentos (Car).

questionAnswers(10)

yourAnswerToTheQuestion