我知道这可以使用包装器模式来完成,但我很难理解以下代码是如何工作的。
ByteArrayOutputStream bytearray = new ByteArrayOutputStream();
DataOutputStream os = new DataOutputStream(bytearray);
通过ByteArrayOutputStream
引用 DataOutputStream
的构造函数意味着 DataOutputStream
转换为 ByteArrayOutputStream
,但是如何呢?
此后,os.writeUTF("String");
DataOutputStream
怎么样转换为ByteArrayOutputStream
.
幕后发生了什么?有人可以解释一下细节吗?
最佳答案
DataOutputStream
仅需要在其构造函数中实现 OutputStream
。它不关心它是如何实现的,只关心它满足接口(interface)。 ByteArrayOutputStream 提供由字节数组支持的输出流。同样,您可以使用 FileOutputStream 来获取磁盘上文件支持的流。从DataOutputStream
的角度来看,它们都是与接口(interface)一起使用的流。 OutputStream
是一个非常简单的接口(interface),只定义了一些将字节数组写入某种存储设备的方法。
幕后并没有什么魔法,它只是使用 OutputStream
并且不关心它是如何实现的。
关于java - 将 ByteArrayOutputStream 传递到 DataOutputStream 的构造函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020958/