可以在不使用构造函数的情况下链接java流吗?

时间:2013-01-25 09:07:31

标签: java stream constructor-chaining

我知道有一种方法可以通过使用构造函数来链接流:

BufferedReader bf=new BufferedReader(new InputStreamReader(io.openStream()));

但是,还有另一种方式吗?

SetSink/SetProcess();

也许?

感谢。

2 个答案:

答案 0 :(得分:0)

由于你无法使用包裹的Stream而没有东西包装,答案是

a)不,你不能和

b)你不想这样做。

  

一个原因可能是我构建了一个非常长的链,并且只想将接收器流更改为结束而不是构建新的接收器。

在这种情况下,您可以使用中间变量,如

InputStream in = new FileInputStream(filename);
if (filename.endsWith(".gz"))
    in = new GZIPInputStream(in);
in = new BufferedInputStream(in);
if (objectStream)
   return new ObjectInputStream(in);
return DataInputStream(in);

答案 1 :(得分:0)

如果查看BufferedReader class的javadoc,构建它的唯一方法是在构造函数中传递一个读者。

有什么理由不使用构造函数?