我正在阅读Lambda状态:图书馆版,但对以下陈述感到惊讶:
在Streams部分下,有以下内容:
List<Shape> blue = shapes.stream()
.filter(s -> s.getColor() == BLUE)
.collect(Collectors.toList());
该文件没有说明shapes
实际的内容,我也不知道它是否重要。
让我感到困惑的是:List
此代码块返回什么样的具体代码?
- 它将变量分配给
List<Shape>
,这是完全可以的。 stream()
也不filter()
决定要使用哪种列表。Collectors.toList()
均未指定的具体类型List
。
那么,这里使用的是什么具体类型(子类)List
?有保证吗?
toUnmodifiableList()
方法是在Java 10中添加的,因此现在似乎toList()
可以保证的可变性。