Объясните, пожалуйста, в чем прикол дженериков <? extends ClassName> и <? super ClassName>?
если мы определяем что-то типа
List<? extends Exception> list, то в этот лист мы можем пихать любой класс, что является... СУПЕРклассом от Exception, так?
и наоборот
если мы определяем что-то типа
List<? super Exception> list, то в этот лист мы можем пихать любой класс, что является НАСЛЕДНИКОМ от Exception?
я правильно это понимаю?