Я использовал StringReader в назначении структур данных (коды Хаффмана) и проверял, достигнут ли конец строки. Я обнаружил, что значение int, которое возвращает StringReader.read (), равно не -1, а 65535, поэтому приведение результата к байту решило мою проблему с бесконечным циклом.
Это ошибка в JDK, или это обычная практика приводить значения, возвращаемые из вызовов Reader.read (), в байты? Или я что-то упустил?
Суть моего кода была примерно такой:
StringReader sr = new StringReader("This is a test string");
char c;
do {
c = sr.read();
//} while (c != -1); //<--Broken
} while ((byte)c != -1); //<--Works