Java一次性模式

时间:2011-10-14 21:41:38

标签: java garbage-collection dispose

C#使用dispose pattern支持确定性垃圾收集的一次性模式。

java有这样的模式吗?

Java 7有autoclosable,您可以使用try finally块来调用close方法。

7之前的版本呢?

是否有针对Java 5或6的一次性模式(确定性垃圾收集)?

3 个答案:

答案 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)。