Suspicious byte value returned from 'InputStream.read()'
Reports expressions of byte
type returned from a method implementing the InputStream.read()
method.
This is suspicious because InputStream.read()
should return a value in the range from 0
to 255
, while an expression of byte type contains a value from -128
to 127
. The quick-fix converts the expression into an unsigned byte
by applying the bitmask 0xFF
.
Example:
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++]; // problem
}
}
After applying the quick-fix:
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;
}
}
New in 2023.2
Inspection Details | |
---|---|
Available in: | IntelliJ IDEA 2023.3, Qodana for JVM 2023.3 |
Plugin: | Java, 233.SNAPSHOT |
Last modified: 13 July 2023