为什么在这个班( StringWriter , PrintWriter )方法 close 没有javadoc中提到的效果?我明白,我想简单的计划没有实现。但为什么呢?
StringWriter
PrintWriter
close
bvpmtnay1#
StringWriter 文件系统上没有任何资源 PrintWriter . 是的 close 方法的存在只是为了满足 Closable 接口。
Closable
4bbkushb2#
这个 close() 方法 StringWriter 什么都不做,因为没有什么需要做的。现在我们可以将其与其他类型的 Writer (等等)确实需要在“接近”的时候做点什么。例如:一 BufferedWriter 需要刷新任何缓冲输出。。。这样它就不会迷路了。一 FileWriter 需要对打开的文件的本机文件句柄执行关闭。必须这样做,因为如果这些句柄没有关闭,jvm将耗尽,“opens”将停止工作。但是 StringWriter 不需要做任何事。。。所以没有。这个 StringWriter::close() 方法存在,因为它实际上是在其超类中实现的。该方法存在于超类中,以使其在多态上下文中(更)可用。如果 close() 未在中实现 Writer ,那么就有两种 Writer (可关闭和不可关闭)以及使用编写器的应用程序代码需要以不同的方式处理它们。实际上,应用程序可以关闭所有 Writer 对象,知道会做正确的事情。在某些情况下,jit编译器可以优化调用 StringWriter::close() . 在其他情况下,从性能的Angular 来看,调用no-op方法的开销很少显著。
close()
Writer
BufferedWriter
FileWriter
StringWriter::close()
2条答案
按热度按时间bvpmtnay1#
StringWriter
文件系统上没有任何资源PrintWriter
. 是的close
方法的存在只是为了满足Closable
接口。4bbkushb2#
这个
close()
方法StringWriter
什么都不做,因为没有什么需要做的。现在我们可以将其与其他类型的
Writer
(等等)确实需要在“接近”的时候做点什么。例如:一
BufferedWriter
需要刷新任何缓冲输出。。。这样它就不会迷路了。一
FileWriter
需要对打开的文件的本机文件句柄执行关闭。必须这样做,因为如果这些句柄没有关闭,jvm将耗尽,“opens”将停止工作。但是
StringWriter
不需要做任何事。。。所以没有。这个
StringWriter::close()
方法存在,因为它实际上是在其超类中实现的。该方法存在于超类中,以使其在多态上下文中(更)可用。如果
close()
未在中实现Writer
,那么就有两种Writer
(可关闭和不可关闭)以及使用编写器的应用程序代码需要以不同的方式处理它们。实际上,应用程序可以关闭所有
Writer
对象,知道会做正确的事情。在某些情况下,jit编译器可以优化调用StringWriter::close()
. 在其他情况下,从性能的Angular 来看,调用no-op方法的开销很少显著。