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