Java 尝试使用参数上的资源

标签 java try-catch

这是个愚蠢的问题,但我想不通。 我是否需要在使用资源的 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/

相关文章:

java - 我已经创建了 chrome 驱动程序对象,然后我得到了 java.lang.NullPointerException

java - 什么是NullPointerException,我该如何解决?

go - Go 中基于错误类型的细粒度错误处理

c# - 将每个方法包装在 try-catch 或代码的特定部分

java - 如何保护Jar文件不被反编译?

java - 当对象未在 Hibernate 中延迟加载时发出警告

java - 如何使用 Java API 从 TIFF、PNG 图像文件中删除 EXIF 内容

Java:使用 try block 中的变量

javascript - 使用try catch的主要原因是什么?

c# - C# 中嵌套的 try-finally