InputStream.read() メソッドを実装しているメソッドから返されている byte 型の式を報告します。
byte 型の式には -128 から 127 までの値が含まれますが、InputStream.read() は 0 から 255 までの範囲の値を返す必要があるため、これは疑わしいです。
クイックフィックスを使用するとビットマスク 0xFF が適用され、式が符号なしの byte に変換されます。
例:
class MyInputStream extends InputStream {
int pos = 0;
byte[] data;
MyInputStream(byte[] input) {
data = input;
}
@Override
public int read() {
if (pos == data.length) {
return -1;
}
return data[pos++]; // 問題あり
}
}
クイックフィックス適用後:
class MyInputStream extends InputStream {
int pos = 0;
byte[] data;
MyInputStream(byte[] input) {
data = input;
}
@Override
public int read() {
if (pos == data.length) {
return -1;
}
return data[pos++] & 0xFF;
}
}
2023.2 の新機能です