Reader
/のドキュメントを読むとWriter
、次の説明が表示されます。
ライタークラス-writeメソッド
1文字を書き込みます。書き込まれる文字は、指定された整数値の下位16ビットに含まれます。上位16ビットは無視されます。
そして、コードは単純に次のことを行います。
public void write(int c) throws IOException {
synchronized (lock) {
if (writeBuffer == null){
writeBuffer = new char[writeBufferSize];
}
writeBuffer[0] = (char) c;
write(writeBuffer, 0, 1);
}
}
したがって、の場合Writer
、そして私が見る限り、これはchar
データ型で行われた可能性があります。
Reader
一方、intのメソッドread
には、文字またはストリームインジケーターの終わりを返す役割があります。
ドキュメントには次のように書かれています。
リーダークラスの読み取りメソッド
ストリームの終わりに達した場合は、0〜65535または-1の範囲の整数として読み取られる文字。
そのため、charだけではないデータ型が必要であり、この場合はintが使用されます。
そしてそれは次のように実装されます:
public int read() throws IOException {
char cb[] = new char[1];
if (read(cb, 0, 1) == -1)
return -1;
else
return cb[0];
}
したがって、この2番目のケースは、より大きなデータ型の使用を正当化します。
両方のクラスでintを使用する理由は、一貫性の問題である可能性があります。