У меня есть (противоречащие интуиции) наблюдения об общей нотации подстановочных знаков, используемых в коллекциях.
цель нотации с подстановочными знаками Список extends T>
- разрешает присвоение списка (подтипов T) ссылке на List of '? Т '. Его цель не состоит в том, чтобы специально разрешать добавление элементов подтипов T в Список (из '? Of T'), что возможно даже в List
.
List<Number> list = new ArrayList<Integer>(); // invalid , List<Integer> is not assignable to List<Number>
List<Number> list = new ArrayList<Number>() ; // OK
list.add(new Integer(1)); // valid , '? extends Number' not needed!
List<? extends Number> list1 = new ArrayList<Integer>(); // Valid , because of notation '? extends Number'
Является ли мое наблюдение правильно?