gpt4 book ai didi

java - FilterInputStream/FilterOutputStream 的空源

转载 作者:行者123 更新时间:2023-12-02 06:47:35 26 4
gpt4 key购买 nike

我正在编写类似 FilterInputStream 的类(class)或FilterOutputStream .

看起来像

public FilterReadableByteChannel implements ReadableByteChannel {

// Should I permit null for channel?
public FilterReadableByteChannel(final ReadableByteChannel channel) {
// ...
}
}

我发现 FilterInputStreamFilterOutputStream许可证null来源。

 * @param   in   the underlying input stream, or <code>null</code> if
* this instance is to be created without an underlying stream.

问题:

  1. 这有什么实际原因吗?
  2. 是否有可能在创建后更改底层源?

我知道Why Not?可能是一个答案,但我想知道最初的 API 设计者这样做是否有任何原因。

最佳答案

Is there any practical reason for this?

是的。即使没有这样声明,Filter*Stream 类在概念上也是抽象类。 IOW,它们的存在只是为了扩展。子类可能需要在构造后提供 inout 参数(例如:lazily;第一次真正使用时),而 Filter*Stream 为它们提供这种灵 active 。

Is there any possible case that changing the underlying source after created?

最明显的情况是 source 最初为 null。我想到的其他案例是: 1. 创建充当选择器的 Filter*Stream 子类。 IOW,有几种底层流和方法可以从一种流切换到另一种流。 2. 创建连接不同InputStreamFilterInputStream 子类。 3. 创建 FilterOutputStream 的子类,将输出拆分为不同的 OutputStream

I know that Why Not? could be an answer, but I want to know if there were any reason why the original API designer did this.

是的:普遍性。

关于java - FilterInputStream/FilterOutputStream 的空源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18457767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com