这是个愚蠢的问题,但我想不通。 我是否需要在使用资源的 try 中关闭作为参数传递的对象?
这是一个例子:
StringWriter sw = new StringWriter();
try (PrintWriter pw = new PrintWriter(sw)) {
...
}
我需要打电话吗
sw.close();
在 try block 之后?还是自动关闭所有作为参数传递的 Autocloseable 对象?
最佳答案
在 PrintWriter
上隐式调用 close
实际上也会关闭底层的 Writer
。
请看下面的例子:
StringWriter sw = new StringWriter() {
@Override
public void close() throws IOException {
super.close();
System.out.println("closed");
}
};
try (PrintWriter pw = new PrintWriter(sw)) {};
输出
closed
关于Java 尝试使用参数上的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998026/