java - 将 ByteArrayOutputStream 传递到 DataOutputStream 的构造函数中

标签 java dataoutputstream bytearrayoutputstream

我知道这可以使用包装器模式来完成,但我很难理解以下代码是如何工作的。

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/

相关文章:

java - 在 Java 中使用 Double 值序列化和反序列化数据

java - 在字节数组中保存字节数组的长度

http - 使用 J2ME 上传一个 wav 文件

java - Eclipse JDK 1.8 不工作

Java 或 Scala RFC5987

java - 引用变量 DataOutputStream 和 FileOutputStream

java - 向服务器发送 POST 请求

java - 每次打开 Android 应用程序时显示 toast

java - 使 JComboBox 表现得像一个带有分割的菜单

java - DataOutputStream 不刷新