Java一次性模式

Dar*_*der 15 java garbage-collection dispose

C#支持使用dispose模式进行确定性垃圾收集的一次性模式.

java有这样的模式吗?

Java 7有autoclosable,你可以使用try finally blocks来调用close方法.

7之前的版本怎么样?

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

Jon*_*eet 19

Java 7之前最接近的只是"手动"try/finally块:

FileInputStream input = new FileInputStream(...);
try {
  // Use input
} finally {
  input.close();
}
Run Code Online (Sandbox Code Playgroud)

using当我第一次从Java背景开始使用C#1.0时,这句话是我发现最好的C#之一.最后在Java 7中看到它很好:)

您还应该考虑Closeables在Guava中 - 它允许您不必担心引用是否为null(就像using语句一样),并且可选择"关闭时记录和吞下"异常,以避免任何此类异常有效地"覆盖"从try块抛出的异常.


Ran*_*pho 6

处理模式的全部目的是支持C#的独特using (temporaryObject) 模式.Java在7之前就没有那种模式了.

具有资源的所有Java对象都通过手动关闭保存资源的对象来支持处置模式.

  • 我知道这是一个古老的帖子,但为了完整起见,公平地说它的另一种方式."使用"的全部目的是确保在本地环境中确实丢弃一次性物体而不需要尝试/最终封闭.一次性模式本身经常在局部上下文之外使用,因此没有"使用",特别是如果被处置的对象包含对其他一次性对象的引用. (4认同)