1

Тема: Параметризація

Усім привіт!

Читаю Філософію Java 4
Зараз застряг на generics главі
Не можу розібратися в чому відмінність між <? extends T> i <? super T>
З тих прикладів, що є в книжці ніяк не можу зрозуміти коли краще застосовувати те чи інше

2

Re: Параметризація

Воно?
http://stackoverflow.com/questions/4343 … -t-in-java

3

Re: Параметризація

Тут як на мене досить зрозуміло написано.
http://docs.oracle.com/javase/tutorial/ … unded.html
http://docs.oracle.com/javase/tutorial/ … unded.html

4

Re: Параметризація

Якщо я правильно все зрозумів, то
1) extends - для зчитування, super - для запису
2) При отакій ієрархії

class Fruit{}

class Apple extends Fruit{}

class Jonathan extends Apple{}

class Orange extends Fruit{}

<? extends Apple> - означає, що тут можна використовувати Apple i Jonathan
a <? super Apple> - тільки Fruit i Apple

тоді я не розумію, як вийшло отаке:

public class SuperTypeWildcards {
static void writeTo(List<? super Apple> apples) {
apples.add(new Apple());
apples.add(new Jonathan());
// apples.add(new Fruit()); // Error
}
}