开发者社区> 问答> 正文

为什么spring DefaultSerializer的serialize方法没有关闭ObjectOutputStream

代码如下:ObjectOutputStream没有调用close方法,只调用了flush方法,难道不需要关闭么

public class DefaultSerializer implements Serializer<Object> {
 
    /**
     * Writes the source object to an output stream using Java Serialization.
     * The source object must implement {@link Serializable}.
     */
    public void serialize(Object object, OutputStream outputStream) throws IOException {
        if (!(object instanceof Serializable)) {
            throw new IllegalArgumentException(getClass().getSimpleName() + " requires a Serializable payload " +
                    "but received an object of type [" + object.getClass().getName() + "]");
        }
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        objectOutputStream.writeObject(object);
        objectOutputStream.flush();
    }
 
}

展开
收起
a123456678 2016-03-18 14:26:15 2782 0
1 条回答
写回答
取消 提交回答
  • 关闭的话,底层流也关闭了,这个方法的意思只是将一个对象写入到一个输出流中,并不需要关闭底层流;个人觉得关闭流是否要使用嵌套流来关闭,要看嵌套流相对于底层流是否额外需要资源要释放。

    2019-07-17 19:06:38
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多