1

背景故事:

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

问题:

那么,普通的旧字符串有可比性吗?以下之间的一些概括?

  • [Input|Output]Stream
  • Reader|Writer
  • StringBuffer
  • StringBuilder
  • CharBuffer(来自蔚来)
  • 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);
    // ...
}

使用预期方法:

通过一些想象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
+ ...

如果不存在这样的功能,我应该编写自己的迷你 API 吗? (对于更大的 API,我目前正在参与)

这是怎么回事

4

3 回答 3

1

这个(是的 - Apache Commons)。

于 2009-10-14T18:19:40.277 回答
0

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

于 2009-10-14T19:58:17.853 回答
0

谷歌的 common-ioInputSupplier和我提议的接口不是OutputSupplier类似的东西吗?(一种概括所有可能的输入和输出流的方法)

奇怪的是,谷歌接口的类型参数没有任何约束(我在想Closable什么)。

于 2009-11-11T23:44:29.683 回答