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

标签 java casting io stream

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

public class FilterStream1 extends FilterOutputStream {
}

public class FilterStream2 extends FilterOutputStream {
}

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

return new FilterStream1(out);

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

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

在这种情况下我应该注意什么吗?

最佳答案

是的,将过滤器流放入其他过滤器流中是完全合法的。不会出现任何问题。

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

关于java - 我可以用另一个 FilterOutputStream 包装一个 FilterOutputStream 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39099558/

相关文章:

java - GAE Long 太长了有没有办法让 Long ID 变短?

java - 在 Java 中通过套接字有效地发送大的 int[]

c# - IO.directorynotfound - 动态 SqlConnection 字符串

c++ - 如何输入某个文件,同时将某些部分分配到不同的变量中

python - 非守护进程 python 线程在完成任务后会退出吗?

java - 无法连接到数据库(错误 :`com.mysql.jdbc.Driver`)

java - Mockito:如何在 Spring bean 中部分模拟字段依赖关系

java - Perl YAML::Syck 编码的字符串,如何使用 JYaml 在 Java 中正确解码?

通过 void * 转换枚举

c++ - 检查引用上的静态转换