InputStream和OutputStream抽象方法

时间:2013-04-30 04:26:43

标签: java inputstream abstract outputstream

我最近一直在探索java.io包,我一直想知道在哪里可以找到InputStream和OutputStream中抽象类的确切进程。

我很眼花缭乱,因为至少根据源代码,核心方法都是抽象的(例如InputStream.read()OutputStream.write(int b))。我特别关注密切方法,其javadoc明确表示他们什么都不做:

  

关闭此输入流并释放与该流关联的所有系统资源。

     

close的{​​{1}}方法无效。

嗯,在输出流读取时输入流显然是写入的,并且绝对InputStream必须执行刷新和资源释放。

有人能给我一个解释吗?

1 个答案:

答案 0 :(得分:1)

这些类是抽象的,因为它们可以很容易地扩展,实现者类可以使用Decorator模式(如图here所示)。使用装饰器模式,实现者类可以在运行时添加动态功能。例如:拥有InputStream可以使用FileInputStream读取文件,该文件可以使用ObjectInputStream读取序列化对象。如何做到这一点?

ObjectInputStream ois = new ObjectInputStream(
    new FileInputStream(new File("/path/to/file.dat"));