黑马程序员技术交流社区

标题: 为什么会有close方法呢 [打印本页]

作者: 吃阁子的猫    时间: 2013-8-10 10:40
标题: 为什么会有close方法呢
本帖最后由 吃阁子的猫 于 2013-8-11 18:37 编辑

ByteArrayOutputStream类中的API描述关闭 "ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException",既然这样,为什么还是会有close()方法呢?

作者: Friendy89    时间: 2013-8-10 12:17
我个人认为应该是这样的,因为ByteArrayOutputStream继承了父类OutputStream,它就应该具备父类的功能,而OutPutStream中具有close()方法,所以它应该也有close()方法。至于关闭无效,可以参考它的源码,源码中的close()方法中没有任何执行代码,他就是一个空的函数。

作者: 牛牛    时间: 2013-8-10 12:38
ByteArrayOutputStream是用来缓存数据的(数据写入的目标(output stream原义)),向它的内部缓冲区写入数据,缓冲区自动增长,当写入完成时可以从中提取数据。由于这个原因,ByteArrayOutputStream常用于存储数据以用于一次写入~
他没有操作到windows的底层只是把数据写进行数组所以他没有流可以关闭~所以实现OutPutStream中的close()为空方法就好。
作者: 吃阁子的猫    时间: 2013-8-10 14:07
牛牛 发表于 2013-8-10 12:38
ByteArrayOutputStream是用来缓存数据的(数据写入的目标(output stream原义)),向它的内部缓冲区写入数 ...

那就是不用关流咯?

作者: 吃阁子的猫    时间: 2013-8-10 14:11
Friendy89 发表于 2013-8-10 12:17
我个人认为应该是这样的,因为ByteArrayOutputStream继承了父类OutputStream,它就应该具备父类的功能,而O ...

那关闭的这个动作不就多余了吗
作者: Friendy89    时间: 2013-8-10 15:00
吃阁子的猫 发表于 2013-8-10 14:11
那关闭的这个动作不就多余了吗

可以这么说,在程序设计的时候关闭动作可以不用写的,他只是为了继承父类而存在的方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2