Какой смысл говорить <? расширяет SomeObject> вместо <SomeObject>

Итак, я просматривал некоторый код Java и наткнулся на:

List<? extends SomeObject> l;

в основном этот список принимает все объекты, которые являются своего рода SomeObject - сам SomeObject или его наследники. Но в соответствии с полимофизмом, его наследники также могут рассматриваться как SomeObject, так что это также будет работать:

List<SomeObject> l;

Так зачем кому-то использовать первый вариант, если второй четко определен и практически идентичен?

Ответы на вопрос(5)

Ваш ответ на вопрос