Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Если вы ответили — Number и его любого наследника, то вы ошиблись. Ответ — ничего!
Строго говоря, туда можно записать null
Stream<T> extends BaseStream<T, Stream<T>>
BaseStream<T, S extends BaseStream<T, S>> {
S parallel();
S sequential();
}
S parallel();
S sequential(); возвращали бы просто BaseStream, в котором нет методов интерфейса Stream. Поэтому, чтобы пользоваться методами предка, как если бы они были методами самого интерфейса есть вот такой подход. Его обычно называют рекурсивные дженерики
Нетривиальные проблемы с generic'ами и возможные решения