Я ожидал взаимно однозначного соответствия между символьными потоками и байтовыми потоками с точки зрения организации классов в их иерархии.
FilterReader
и FilterWriter
(потоки символов) соответствуют классам FilterInputStream
и FilterOutputStream
(поток байтов).
Однако я заметил несколько изменений, как -
BufferedInputStream
расширяет FilterInputStream
, но BufferedReader
НЕ расширяет FilterReader
.
BufferedOutputStream
и PrintStream
оба расширяются FilterOutputStream
, но BufferedWriter
и PrintWriter
НЕ расширяются FilterWriter
.
FilterInputStream
и FilterOutputStream
не являются абстрактными классами, но FilterReader
и FilterWriter
являются
Я не уверен, что я слишком параноидален, чтобы указывать на такие различия, но мне было просто любопытно узнать, было ли в этом решении логическое обоснование.