功能簡介
PushBackReader容許將字符推回到流的字符流 reader
PushBackReader 是一個裝飾器模式最尋常的樣子 FilterReader 是抽象的裝飾器模式 Decoder Reader是抽象構建 Component PushbackReader是具體的裝飾器類 ConcreteDecoder 其餘的具體的Reader的子類,則是須要具體裝飾的對象 |
|
![image_5b9a5ee6_4c6e image_5b9a5ee6_4c6e](http://static.javashuo.com/static/loading.gif) FilterReader就是爲了抽象的Decorator而存在的 它內部有一個Reader in 而後全部的其餘方法都是無差異的轉發到了in上 有興趣的能夠過去看下源碼(1.8 如此) |
還記得PushBackInputStream中的原理麼?
內部維護了一個數組,用來保存記錄 被回退掉的數據
PushBackReader的原理也是同樣的
對照下字段就能夠發現端倪
同PushBackInputStream 同樣,他也是從後往前存放的
初始時,緩衝區爲空 pos == length
隨着元素的增長,pos的位置往前移動
緩衝區一旦寫滿,將會拋出異常
總結
PushBackReader 與 PushBackInputStream實現的原理是同樣的
並且,並且,裏面的不少方法的代碼(jdk1.8下)
都是幾乎同樣的,都是幾乎同樣的,都是幾乎同樣的
本文說的有些粗,由於不少代碼邏輯同PushBackInputStream
因此有興趣的,請參看以前PushBackInputStream 的介紹
若是不想深刻,只須要清楚:
PushBackReader 是使用了裝飾器模式
內部有一個緩存區用來存儲被回退掉的內容
若是內容滿了不支持繼續回退寫緩存,會拋出異常
讀取的時候先從這個回退的緩衝區中讀取數據,而後再考慮從流中讀取