1
私はかなり長い間JavaのI/Oで作業していますが、なぜint
を使用するのか疑問に思っていません。これは私が意味するものです:Java OutputStreamでのintの出力
/**
* Writes a byte. This method will block until the byte is actually
* written.
*
* @param val the byte to be written to the stream
* @throws IOException If an I/O error has occurred.
*/
public void write(int val) throws IOException {
bout.write(val);
}
ドキュメントには、「バイトを書き込む」メソッドがかなり明確です。 DataOutput::write(int)
をご覧ください。これは署名です:
/**
* Writes to the output stream the eight
* low-order bits of the argument <code>b</code>.
* The 24 high-order bits of <code>b</code>
* are ignored.
*
* @param b the byte to be written.
* @throws IOException if an I/O error occurs.
*/
void write(int b) throws IOException;
24 bの上位ビットは無視されます。少なくとも私は奇妙に聞こえる。なぜそれを宣言しなかったのですか
void write(byte b) throws IOException;
歴史的な理由はありますか?または何かもっと微妙なもの?
int型の値を渡すと、キャストする必要はありません。 (もちろん整数が書かれることはないことに注意してください) –
@StefanLoKranDotti整数が書かれていないという事実は、intをバイトに明示的にキャストするよりもはるかに混乱しているようです。 –
はい - そうです。たとえば、BufferedOutputStreamを使用すると、内部的にキャストを行うだけです。 –