Рассмотрим этот гипотетический класс (который я нашел в Интернете видео):дженерики в конструкторах в Java?
public class Contrived<T extends Number> extends ArrayList<T> {
List <? extends T> values;
......
}
Здесь переменные типа, которые могут принимать Contrived
является Number
или какой подтип Number
. Но сам класс наследуется от ArrayList
, поэтому любой тип, который получает класс, определит тип ArrayList
.
Теперь есть поле под названием values
, которое составляет List<? extends T values>
. так что это значит? Содержит ли list
все, что распространяется на T
(что, в свою очередь, распространяется Number
).
от PECS (producer extends, consumer super)
правило, могу ли я использовать это List
для чтения элементов, но не добавить в list
.
Как будет выглядеть constructor
, если мне нужно пройти list of doubles or some type T
?
Я не думаю, что я полностью понял идею класса «Пропитанный». Что он должен делать? Он расширяет 'ArrayList' и имеет список' values' как ссылочную переменную. Класс, таким образом, в основном содержит два списка, каково намерение класса? От этого зависит полезный конструктор (например, «Что должен делать конструктор?»). Можете ли вы ссылаться на источник? – dst
@ dst: это гипотетический класс. ничего важного он не делает как таковой. но мне интересно, как будет выглядеть конструктор для него, и какие операции можно выполнить с помощью данного поля 'list'? –
'public Прозревший (Список))? –