経緯
javaを学習中です。
IOを理解するため、Readerクラスをオーバーライドして、独自のReaderを作ろうとしています。
そこで、試しに以下のようなReaderを作ってみました。
オーバーライドしていない時と挙動は一緒だと思っています。(コンストラクタのReaderを使って値を返しているので)
java
1class MyReader extends Reader { 2 Reader reader; 3 4 MyReader(Reader reader) { 5 this.reader = reader; 6 } 7 8 @Override 9 public int read(char[] cbuf, int off, int len) throws IOException { 10 int c = reader.read(); //Readerクラスで読んだものをそのまま返す 11 System.out.println("中 = " + c); 12 return c; 13 } 14 15 @Override 16 public void close() throws IOException { 17 reader.close(); 18 } 19}
そしてこのクラスを使ってテキストファイルを読み込んでみると、
java
1try (MyReader reader = new MyReader(new FileReader(SRC_FILE_PATH))) { 2 int c; 3 while ((c = reader.read()) != -1) { 4 System.out.println("外 = " + c); 5 } 6 } catch (IOException e) { 7} 8
表示結果が中(呼び出されたメソッド)と外(呼び出したメソッド)で違います。
出力結果: 中 = 65533 外 = 0 中 = 65533 外 = 0 中 = 73 外 = 0 中 = 33 外 = 0 中 = -1
といったような感じで・・・
###質問
中から返ってくるint cと外で表示されるint cは同一ではないのでしょうか?
訳をご存知の方がおりましたら、教えていただきたいです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー