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

最佳答案

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

请注意,PipedInputStream中的内部缓冲区不是private而是protected,因此可以通过与protected receive()方法相同的方式进行访问。但是PipedOutputStream播放公平,不能直接访问它。

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

不需要“ toString”之类的“魔术”。

07-25 21:22