尝试使用资源文件编写器是一种好的做法吗?
我在网络和Joshua Bloch的“Effective Java”一书中看到了这个例子。
try(BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))){
writer.write(str); // do something with the file we've opened
}
catch(IOException e){
// handle the exception
}
此示例没有问题,它将自动关闭,反过来,将关闭 ;但是,在其他情况下,如果我们以这种方式声明 2 个嵌套资源:BufferedWriter
FileWriter
try (AutoClosable res = new Impl2(new Impl1())) {... }
我想它可能会发生,表现良好,但崩溃,在这种情况下,Java不会引用,以便关闭它。new Impl1()
new Impl2()
Impl1
总是独立声明多个资源(即使在这种情况下不需要),这难道不是一种更好的做法吗?
try(FileWriter fw = new FileWriter(fileName);
BufferedWriter writer = new BufferedWriter(fw)){ ... }