Object cannot be added in the method to the List which is declared as List<? extends Vehicle> in method declaration.
The reason,
1) If the method parameter is declared as List<? extends Vehicles> this means that any object type which is subclass of Vehicles can be added to List.
so here the method m() can be called using List<Car>, List<Van>, List<Subaru>
2) Now consider a scenario
method m() declared same as in your code m(List<? extends Vehicles> Vehicle)
and inside method to the list Vehicle object of type Car is added
and while calling method m, list passed as parameter is m(List<Van>) as I exlpained in point 1) which is perfectly valid
Here the object type added in the list and the object type used to call the method contradicts (adding Car and called using Van)
hence the
java compiler does not allows to add objects to the collection in the method whose parameter is declared as <? extends ClassType>