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

java流是否可以在不使用构造函数的情况下链接?,java,stream,constructor-chaining,Java,Stream,Constructor Chaining,我知道有一种方法可以通过使用构造函数链接流,如下所示: BufferedReader bf=new BufferedReader(new InputStreamReader(io.openStream())); 但是,还有别的办法吗 SetSink/SetProcess(); 也许吧 谢谢。因为如果没有要包装的内容,就无法使用已包装的流,答案是 a) 不,你不能,而且 b) 你不会想的 一个原因可能是我已经建立了一个很长的链,只想将汇流更改为末端,而不是建立一个新的 在这种情况下,可以使用中

我知道有一种方法可以通过使用构造函数链接流,如下所示:

BufferedReader bf=new BufferedReader(new InputStreamReader(io.openStream()));
但是,还有别的办法吗

SetSink/SetProcess();
也许吧


谢谢。

因为如果没有要包装的内容,就无法使用已包装的流,答案是

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);

如果您查看javadoc中的,构建它的唯一方法是在构造函数中传递一个读取器


有没有不使用构造函数的理由?

为什么要避免使用构造函数?我没有,只是想知道这是否可能。一个原因可能是我已经构建了一个非常长的链,只想将汇流更改为末端,而不是构建一个新的。正如我在上面所评论的,如果我为文件X构建了一个长链,并且在完成X之后,我希望为文件Y构建相同的链,那么就没有办法使用已经构建的链了?太糟糕了:(谢谢)没有要求链全部在一行上或只在一个组合中。见上文。是的,我已经查看了javadoc,我注意到这是唯一的方法。但是我想知道是否有更高的方法来实现这一点。(比如使用Reader super类或类似的)