将ByteArrayOutputStream传递给DataOutputStream的构造函数

ARA*_*AZA 0 java dataoutputstream bytearrayoutputstream

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

ByteArrayOutputStream bytearray = new ByteArrayOutputStream();
DataOutputStream os = new DataOutputStream(bytearray);
Run Code Online (Sandbox Code Playgroud)

ByteArrayOutputStream引用传递给构造函数DataOutputStream意味着DataOutputStream转换为ByteArrayOutputStream,但如何?

在此之后,os.writeUTF("String"); 如何DataOutputStream转换为ByteArrayOutputStream.

幕后发生了什么?有人可以解释一下细节.

Jef*_*ter 5

DataOutputStream只需要的任何实现OutputStream在其构造.它并不关心它是如何实现的只是它满足接口.A ByteArrayOutputStream提供由字节数组支持的输出流.同样,您可以使用a FileOutputStream来获取磁盘上的文件支持的流.从它DataOutputStream的角度来看,它们都是与界面一起使用的流. OutputStream是一个非常简单的接口,只是定义了一些将字节数组写入某种存储设备的方法.

在幕后没有任何魔力,它只是使用了一个OutputStream而不关心它是如何实现的.