2009-10-14 32 views
1

背景故事:

XML有这些Source和Result接口。 这些是Java中不同XML技术之间的适配器。 这些类的实例代表DOM,SAX,JAXB,XML流,XML事件 (甚至更多?)。Java:可能的泛化:流,读者,字符缓冲区,stringbuilder,...?

问题:

那么,对于普通的老字符串,有什么可比的吗?一些概括 之间?

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

用法与预期的方法:

随着一些虚构的CharacterSourceCharacterResult接口,现在读/写possi每一个方法竹叶提取:

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,我目前参与的)

什么是关于这个

+1

你能解释一下这样的界面是什么样子的,以及为什么要使用它? – 2009-10-14 17:42:41

+0

增加了澄清示例代码 – 2009-10-14 18:14:42

回答

1

There's this(yep - Apache Commons)。

+0

嗯,实用程序类,看起来litte不方便。但是,无论如何感谢;) – 2009-10-14 18:24:45

0

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

0

是不是Google's common-ioInputSupplierOutputSupplier类似的事情对我提出的接口? (一种推广所有可能的输入输出流的方法)

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