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의 새로운 기능