Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
? extends T
и ? super T
— сразу попытался представить ситуации, где они могут быть полезны — и как-то естественно пришёл к таким интерфейсам.public List getList(String key, List defaultValue)
public List<Object> getList(String key, List<Object> defaultValue)
Configuration conf = ...; // some configuration
List<String> defaults = ...; // some default value
List<Object> value = conf.getList("id", defaults);
<T>
является инвариантным, в <? extends T>
— ковариантным, а в <? super T>
— контравариантным. А то много разработчиков слышали эти термины, но что именно они описывают — без понятия, хотя каждый знаком с их сутью. К тому же, во всяких блогах по ООП они, почему-то, в подавляющем большинстве объясняются на примерах из C#.
Использование generic wildcards для повышения удобства Java API