データ構造の割り当て (ハフマン コード) で StringReader を使用していて、文字列の末尾に到達したかどうかをテストしていました。StringReader.read() が返す int 値は -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