Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
6年前关闭。
我正在编写类似FilterInputStream或FilterOutputStream的类。
好像
而且我发现FilterInputStream和FilterOutputStream都允许
题:
有什么实际原因吗?
创建后是否有可能更改基础源?
我知道
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
6年前关闭。
我正在编写类似FilterInputStream或FilterOutputStream的类。
好像
public FilterReadableByteChannel implements ReadableByteChannel {
// Should I permit null for channel?
public FilterReadableByteChannel(final ReadableByteChannel channel) {
// ...
}
}
而且我发现FilterInputStream和FilterOutputStream都允许
null
源。 * @param in the underlying input stream, or <code>null</code> if
* this instance is to be created without an underlying stream.
题:
有什么实际原因吗?
创建后是否有可能更改基础源?
我知道
Why Not?
可能是一个答案,但是我想知道原始API设计者这样做是否有任何原因。 最佳答案
有什么实际原因吗?
是。即使未声明,类Filter*Stream
在概念上也是抽象类。 IOW,它们仅存在以进行扩展。子类在构造后可能需要提供in
或out
参数(例如:懒惰;首次实际使用时),而Filter*Stream
提供了这种灵活性。
创建后是否有可能更改基础源?
很明显的情况是当source最初是null
时。我想到的其他情况是:
1.创建Filter*Stream
的子类作为选择器。 IOW具有从一种切换到另一种的几种基础流和方法。
2.创建FilterInputStream
的子类,以连接不同的InputStream
。
3.创建FilterOutputStream
的子类,将输出分成不同的OutputStream
。
我知道为什么不呢?可能是一个答案,但是我想知道原始API设计者是否有任何理由这样做。
是的:普遍性。
关于java - FilterInputStream/FilterOutputStream的空源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18457767/
10-10 10:03