1. 程式人生 > >看看StringRead的內部

看看StringRead的內部

先來看看這個類都和哪些類和介面有關係,看到StringReader主要是繼承了抽象類Reader,我們知道Writer和Reader類是設計來處理基於字串的輸入和輸出的,如下圖

該類有4個變數屬性,一個字串和其相應的特性長度,next,mark。

該方法就一個建構函式,幹了什麼,一眼也明白了

這個方法就用來判斷str字串是否為空

然後再看看read方法,這裡加了一個鎖,lock其實在Reader裡面就是當前物件本身,然後next會遞增,

然後看看skip方法,這裡會先判斷如果next已經不小於length,就返回0,這裡還會ns和字串可移動長度比較,只是後面的是考慮負數的情況,退回的長度不能超過next,然後返回實際移動的距離。

ready方法就是看str資料是否已經不為空

還有close方法也很好理解,到這想想那些方法裡的 ensureOpen還是有用的,畢竟併發清情況下執行了,沒有這個方法就會錯亂啦。

然後寫一個demo