PipedInputStream
如何从PipedOutputStream
读取?是使用toString()
还是有一些隐藏的魔术来访问private
成员变量?
最佳答案
PipedOutputStream.write(int byte)
将仅调用protected
方法PipedInputStream.receive(int byte)
,而该方法将仅填充其自己的缓冲区。批量读取/写入方法也是如此。
请注意,PipedInputStream
中的内部缓冲区不是private
而是protected
,因此可以通过与protected
receive()
方法相同的方式进行访问。但是PipedOutputStream
播放公平,不能直接访问它。
这当然有效,因为protected
方法和字段不仅可以通过派生类来访问,而且可以通过Wikipedia中所示的完整包进行访问。
不需要“ toString”之类的“魔术”。