【发布时间】:2015-09-06 11:27:09
【问题描述】:
我们使用 3 个基本步骤处理对象:
- 声明
- 实例化
- 初始化
我的问题是关于在 () 部分的 try-with 中必须执行哪些步骤才能自动关闭要制作的资源。
示例 1 - FileReader 对象会在此代码中自动关闭:
try (BufferedReader br = new BufferedReader(new FileReader(filePath)))
{
//some code;
}
示例 2 - buf2 是否会在此代码中自动关闭:
private static BufferedReader buf1;
public static void main(String[] args) throws IOException {
//some code
try (BufferedReader buf2 = buf1)
{
}
}
附:有人认为这个问题与 Try With Resources vs Try-Catch 重复。它不是。这个问题是关于 try-catch 和 try-with-resources 之间的区别。我的问题是关于试用的细节。
【问题讨论】:
-
听起来像是一道作业题,但这里有一个提示:try-with-resources 要求声明的变量实现
AutoCloseable,并隐式调用close()终于阻塞了。 -
准备(学习)认证是的功课。谷歌搜索 OCPJP 甚至会链接到“甲骨文大学”网站。 --- 也许The try-with-resources Statement 上的 Java 教程的第一段会对你有所帮助。
-
如果你真的很想学习 Java,你不应该害怕尝试。创建一个 AutoCloseable 类。在 close() 方法中添加 System.out.println 语句。将上述代码与该类一起使用,而不是 BufferedReader。看看有没有打印出来。或者只是在 BufferedReader.close() 中添加一个调试器断点,看看是否到达。
-
@JB Nizet 感谢您抽出宝贵时间。我不害怕。问题是我更喜欢理解原则而不是任何情况。我写在这里是因为我希望有人能给出自动关闭的主要原则。
标签: java