为什么 Java 8 流类可自动关闭?

2022-09-03 12:52:35

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

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


答案 1

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

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


答案 2

推荐