при работе с подстановочными знаками, такими как установка / добавление универсального элемента в определенный контейнер, предлагается ли использовать что-то вроде этого?
void add(List<? super T> someList,someitem){
someList.add(someItem);
}
и при получении предмета предлагается использовать что-то вроде этого
<T> void f1(List<? extends T> obj, T item) {
obj.add(item);
}
Что за этим стоит? и когда я узнаю, следует ли мне это использовать?