我可以用另一个FilterOutputStream包装FilterOutputStream吗?

时间:2016-08-23 11:10:34

标签: java casting io stream

我希望在输出流上使用两个不同的过滤器。假设以下是过滤器。

public class FilterStream1 extends FilterOutputStream {
}

public class FilterStream2 extends FilterOutputStream {
}

我有一个OutputStream out,当前使用FilterStream1包装,如下所示

return new FilterStream1(out);

我可以通过添加第二个过滤器输出流来修改它以执行以下操作吗?

OutputStream intermediateStream = new FilterStream2(out);
return new FilterStream1(intermediateStream);

在这种情况下,我有什么需要记住的吗?

1 个答案:

答案 0 :(得分:1)

是的,将过滤器流放在其他过滤器流中是完全合法的。没有问题即将出现。

实际上,这正是在流api中实现的装饰器模式的用例。 (参见https://en.wikipedia.org/wiki/Decorator_pattern以供参考。)