为什么Java 8 Stream类AutoCloseable?

Dav*_*kys 13 java java-8 java-stream

在Java 8中,Stream类实现了AutoCloseable.这意味着应该显式关闭流实例.

我理解为什么文件处理程序和数据库连接是可关闭的.但为什么流?

Lau*_*ntG 21

我认为Stream的当前文档/ javadoc非常清楚:

Streams有一个BaseStream.close()方法并实现AutoCloseable,但几乎所有的流实例实际上都不需要在使用后关闭.通常,只有源为IO通道的流(例如Files.lines(Path,Charset)返回的流)才需要关闭.大多数流都由集合,数组或生成函数支持,不需要特殊的资源管理.(如果流确实需要关闭,则可以在try-with-resources语句中将其声明为资源.)