C#支持使用
dispose pattern确定性垃圾收集的一次性模式.
java有这样的模式吗?
Java 7有autoclosable
,可以用try finally块来调用close方法.
7之前的版本怎么样?
Java 5或6是否有一次性模式(确定性垃圾回收)?
解决方法
Java 7之前最接近的只是“手动”try / finally块:
FileInputStream input = new FileInputStream(...); try { // Use input } finally { input.close(); }
当我第一次从Java背景开始使用C#1.0时,使用语句是我发现最好的C#之一.很高兴在Java 7中看到它:)
您还应该考虑在Guava中使用Closeables
– 它允许您不用担心引用是否为空(就像using语句一样),并且可以在关闭时抛出异常的“logs and swallows”异常,以避免有效的“覆盖“try块抛出的异常.