0

a 如何PipedInputStream从 a 中读取PipedOutputStream?是使用toString()还是有一些隐藏的魔法来访问private成员变量?

4

2 回答 2

2

PipedOutputStream.write(int byte)将简单地调用该protected方法PipedInputStream.receive(int byte),而该方法又将简单地填充其自己的缓冲区。批量读/写方法也是如此。

请注意,内部缓冲区PipedInputStream不是private,但protected因此可以以与方法相同的方式访问protected receive()。但是PipedOutputStream公平竞争并且不直接访问它。

这当然可行,因为protected方法和字段不仅可以通过派生类访问,还可以通过Wikipedia中所示的完整包访问。

不需要像“toString”这样的“魔法”。

于 2012-04-12T18:48:52.247 回答
0

通常你有一个后台线程,它从 OutputStream 读取并将它读取的内容写入 PipedInputStream 直到它完成。

于 2012-04-12T18:49:16.793 回答