Java Generics WildCard Pregunta: Lista <? extiende A>

Digamos que tengo estas clases: Vehículo, automóvil y 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!");
    }

}

y escribo este método addCars:

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

    }

¿Por qué recibo un error de tiempo de compilación? Entiendo que List es un supertipo de List para cualquier X que extienda el Vehículo. ¿Derecha

Gracia

Edit: el error que obtengo (tiempo de compilación): el método add (capture # 2-of? Extend Vehicle) en el tipo List no es aplicable para los argumentos (Car).

Respuestas a la pregunta(10)

Su respuesta a la pregunta