2.1--RandomAccessFile實現類的關聯類FileChannel類圖
DataInput接口的類圖已經畫出,盡管類圖已經展示了與DataInputStream和RandomAccessFile這兩個實現類有各種聯系的元素。但是此時,我對這些元素一無所知,類圖還不夠詳盡。於是附上類圖並解讀該類。
- FileChannel類的外部聯系
該類是一個抽象類,它同時實現了三個接口:SeekableByteChannel、GatheringByteChannel、ScatteringByteChannel,即可見字節通道、聚集字節通道、離散字節通道。這三個接口來自NIO Package,“通道”一詞比較形象,馬上聯想到讀取和寫入數據。如下圖,這些接口規定了它們的實現類應該使用怎樣的參數去實現讀寫任務。但是該抽象類,並沒有真正的“實現”這些接口的操作,而只是復用了它們。這就意味著該抽象類應該是一個能夠處理三種Byte數據的更一般的“通道”。於是它的實現類,任務就堪重了。
該類還繼承了另一個抽象類AbstractInterruptibleChannel(抽象中斷通道),該子類沒有對它的抽象父類進行重寫,也沒有對其抽象方法進行實現,只是復用了它。AbstractInterruptibleChannel(抽象的中斷通道)類提供了這樣幾個方法:close、isopen、begin、implcloseChannel,其中implcloseChannel方法為抽象方法。
這樣一來,FileChannel類就是一個更通用的能夠讀寫各種Byte數據和中斷讀寫的通道。要使該類獲得這樣的能力,就應該增加一些類元素,使得它能夠在面對任意的FIle時,自動轉化為Byte數據,並根據Byte數據的不同調用不同的接口操作。這只是我的思路,源碼中有它自己的實現,但是現在我並不是很關心,我只是想對它有個大概的了解,知道它是什麽樣子,用來做什麽就足夠了。
2.1--RandomAccessFile實現類的關聯類FileChannel類圖