为什么stringwriter、printwriter中的“close”方法没有效果?

sycxhyv7  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(560)

为什么在这个班( StringWriter , PrintWriter )方法 close 没有javadoc中提到的效果?
我明白,我想简单的计划没有实现。但为什么呢?

bvpmtnay

bvpmtnay1#

StringWriter 文件系统上没有任何资源 PrintWriter . 是的 close 方法的存在只是为了满足 Closable 接口。

4bbkushb

4bbkushb2#

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

相关问题