背景ストーリー:
XML には、これらの Source および Result インターフェースがあります。これらは、Java の異なる XML テクノロジ間のアダプタです。これらのクラスのインスタンスは、DOM、SAX、JAXB、XML ストリーム、XML イベント (その他も?) を表します。
質問:
それで、普通の古い文字列に匹敵するものはありますか? 以下の間のいくつかの一般化?
[Input|Output]Stream
Reader|Writer
StringBuffer
StringBuilder
CharBuffer
(NIOより)File
(またはPath
、JDK7 ファンの場合)- (そして最後に)
CharSequence
おそらく、そのような機能を提供する共通の API (Apache commons 何か...?) があるのでしょうか?
明確な例:
古典的なアプローチでの使用法:
インターフェイスは、考えられるすべてのソース (結果) から (へ) 文字を読み取る (書き込む) ことができる必要があります。
interface SomeInterface {
readFrom(CharacterSequence source);
readFrom(InputStream source);
readFrom(Reader source);
readFrom(File source);
// ...
writeTo(CharacterSequence result);
writeTo(OutputStream result);
writeTo(Writer result);
writeTo(File result);
// ...
}
意図したアプローチでの使用:
いくつかの架空CharacterSource
のCharacterResult
インターフェイスを使用すると、それぞれ 1 つのメソッドで読み取り/書き込みが可能になります。
interface SomeInterface {
readFrom(CharacterSource source);
writeTo(CharacterResult result);
}
意図したアプローチの実装、考えられる階層:
interface CharacterSource
+ class CharBufferSource
+ class InputStreamSource
+ class ReaderSource
+ class FileSource
+ ...
interface CharacterResult
+ class CharBufferResult
+ class OutputStreamResult
+ class WriterResult
+ class FileResult
+ ...
そのような機能が存在しない場合、独自のミニ API を作成する必要がありますか? (より大きな API については、私は現在関与しています)
これはどうですか?