C#支持使用dispose pattern进行确定性垃圾回收的一次性模式。
java有这样的模式吗?
Java7有autoclosable,您可以将它与try finally块一起使用来调用close方法。
7之前的版本是什么?
Java5或6是否有可任意处理的模式(确定性垃圾收集)?
发布于 2011-10-15 05:44:16
在Java 7之前,最接近的就是“手动”的try/finally块:
FileInputStream input = new FileInputStream(...);
try {
// Use input
} finally {
input.close();
}当我第一次从C#后台开始使用Java1.0时,using语句是我发现的关于C#最好的东西之一。很高兴终于在Java 7中看到了它:)
您还应该考虑Guava中的Closeables -它允许您不必担心引用是否为空(就像using语句一样),并在关闭时选择性地抛出“日志和燕子”异常,以避免任何此类异常有效地“覆盖”从try块抛出的异常。
发布于 2011-10-15 05:44:40
disposal模式的全部目的都是为了支持C#独特的using (temporaryObject)模式,而在7之前的版本中还没有类似的模式。
所有拥有资源的Java对象都通过手动关闭持有资源的对象来支持处置模式。
发布于 2018-02-24 04:16:13
您正在寻找的是尝试使用资源。
try ( FileInputStream input = new FileInputStream(...);
BufferedReader br = new BufferedReader(...) ) {
// Use input
} 当然,资源必须是可关闭的(或AutoCloseable)。
https://stackoverflow.com/questions/7773872
复制相似问题