可以不调用close方法吗?

时间:2014-06-30 14:25:07

标签: java-io

下面的代码是org.springframework.util.SerializationUtils(spring-core.3.2.1.jar)的serialize方法。 如您所见,没有oos.close方法。可以不调用close方法吗?

org.springframework.util.SerializationUtils

2 个答案:

答案 0 :(得分:1)

在这种特殊情况下,没关系 - 涉及的两个流(ObjectOutputStreamByteArrayOutputStream)不使用任何非托管资源(文件句柄,网络句柄)等等所以它对垃圾来说没问题收藏家只是照顾它。

就我个人而言,我通常会关闭这样的流,只是为了做正确的习惯,以防有人将流的类型更改为 拥有非托管资源的流,但我不认为在这种情况下,它真的算作 bug

答案 1 :(得分:0)

大多数理智的对象在被销毁(垃圾收集)时应该调用

close。但是,由于您不确切知道何时会发生这种情况,因此您应该自己调用close,以便在您预期时进行清理(文件缓冲区刷新,执行网络切断)。