C#使用dispose pattern支持确定性垃圾收集的一次性模式。
java有这样的模式吗?
Java 7有autoclosable
,您可以使用try finally块来调用close
方法。
7之前的版本呢?
是否有针对Java 5或6的一次性模式(确定性垃圾收集)?
答案 0 :(得分:16)
Java 7之前最接近的只是“手动”try / finally块:
FileInputStream input = new FileInputStream(...);
try {
// Use input
} finally {
input.close();
}
当我第一次从Java背景开始使用C#1.0时,using
语句是我发现最好的C#之一。最后在Java 7中看到它是好的:)
您还应该考虑Guava中的Closeables
- 它允许您不必担心引用是否为空(就像using
语句那样)以及可选的“记录和吞下”异常抛出关闭时,避免任何此类异常有效“覆盖”从try块抛出的异常。
答案 1 :(得分:6)
处理模式的全部目的是支持C#独特的using (temporaryObject)
模式。 Java在7之前没有像那样的模式。
具有资源的所有Java对象都通过手动关闭保存资源的对象来支持处理模式。
答案 2 :(得分:-1)
您正在寻找的是尝试使用资源。
false
当然,资源必须是可关闭的(或AutoCloseable)。