2

我希望在字符流和字节流之间就类在其层次结构中的组织方式而言存在一一对应的关系。

FilterReaderFilterWriter(字符流)对应回FilterInputStreamFilterOutputStream(字节流)类。

但是我注意到一些变化,因为 -

  • BufferedInputStream扩展FilterInputStream,但BufferedReader不扩展FilterReader

  • BufferedOutputStreamPrintStream都扩展FilterOutputStream,但BufferedWriterPrintWriter不扩展FilterWriter

  • FilterInputStreamandFilterOutputStream不是抽象类,而是FilterReaderand FilterWriterare。

我不确定我是否过于偏执而无法指出这些差异,但我只是想知道这样的决定背后是否有设计推理。

4

2 回答 2

0

这些Input/OutputStream类已经是 Java 1.0 的一部分,而这些Reader/Writer类仅在 Java 1.1 中添加。但是,似乎没有任何语言更改可以解释您提到的设计差异。

于 2010-05-25T12:11:49.210 回答
0

我认为原因主要是历史原因。最初的面向字节的类是在 Java 早期开发的,设计的某些方面并不理想。当 Java 设计者在 JDK 1.1 中引入面向字符的类时,他们借此机会纠正了 Reader/Writer API 中的一些错误。但到那时,许多客户都在使用 Stream API,现在纠正它们为时已晚。

在您强调的案例中,事实证明没有用于实例化FilterInputStreamandFilterOutputStream类或以多态方式使用它们的真正用例。

于 2010-05-25T12:15:14.000 回答