Java:可能的泛化:流,读者,char缓冲区,stringbuilder,......?

时间:2009-10-14 17:33:03

标签: java string stream buffer nio

背景故事:

XML有这些Source和Result接口。 这些是Java中不同XML技术之间的适配器。 这些类的实例表示DOM,SAX,JAXB,XML流,XML事件 (还有更多?)。

问题:

那么,对于普通的旧字符串,是否有类似的东西?一些概括 以下之间?

  • [Input|Output]Stream
  • Reader|Writer
  • StringBuffer
  • StringBuilder
  • CharBuffer(来自NIO)
  • File (或我们之间的JDK7粉丝Path
  • (最后)CharSequence

也许有一些常见的API(Apache公共东西......?)提供了这样的功能?

澄清示例:

使用经典方法:

接口需要能够从(到)所有可能的源(结果)读取(写入)字符:

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);
    // ...
}

使用预期方法:

使用一些虚构的CharacterSourceCharacterResult接口,现在可以使用一种方法进行读/写:

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
+ ...

如果不存在此类功能,我应该编写自己的mini-API吗? (对于更大的API,我目前参与其中)

这个是什么?

3 个答案:

答案 0 :(得分:1)

this(是的 - Apache Commons)。

答案 1 :(得分:0)

您可以使用ReaderWriter来概括界面。如果您希望阅读/写入File,可以使用FileReader / FileWriter。同样,您可以使用其他Reader / Writer实现来读取/写入String(即CharSequence)或流。

答案 2 :(得分:0)

Google's common-io InputSupplier OutputSupplier 与我提议的相似之处接口? (一种概括所有可能的输入和输出流的方法)

奇怪的是,Google界面的类型参数没有任何约束(我在考虑Closable或其他东西)。