Я читаю Состояние Lambda: Libraries Edition, и меня удивляет одно утверждение:
В разделе Потоки есть следующее:
List<Shape> blue = shapes.stream()
.filter(s -> s.getColor() == BLUE)
.collect(Collectors.toList());
В документе не указано, что на самом деле есть shapes
, и я не знаю, имеет ли это значение даже.
Что меня смущает, так это: Какой конкретный List
возвращает этот блок кода?
- Он присваивает переменной значение
List<Shape>
, что вполне нормально. -
stream()
иfilter()
решить, какой список использовать. -
Collectors.toList()
не указывается конкретный типList
.
Итак, какой тип конкретный (подкласс) List
используется здесь? Существуют ли какие-либо гарантии?