在Java中,我正在尝试为抽象Reader类编写子类。我正在尝试实现Reader的close()方法。我打算编写的子类Reader2将原始Reader(通过调用ReaderObj.read()获得)的输入转换为其他内容,以便在Reader2对象上调用read()将输出翻译后的字符。
例如,这会将所有小写的'a','b'和'c'字符转换为相应的大写字母,并保持其余字母不变:
Reader in = new InputStreamReader (System.in);
Reader2 translated = new Reader2(in, "abc", "ABC");
while (true) {
int x = translated.read;
if (x == -1) {
break;
}
System.out.print((char x));
}
我已经实现了read(),但我不知道如何实现close()。
根据文档,close()方法应该关闭流并抛出IOException。但我不知道如何关闭流,或抛出IOException。我究竟如何重写close()?
答案 0 :(得分:4)
Reader in = new InputStreamReader (System.in);
Reader2 translated = new Reader2(in, "abc", "ABC");
您创建一个输入流阅读器并将其传递给翻译的阅读器。要关闭Reader2实例,只需要在构造函数new Reader2(in, "abc", "ABC");
传递给Reader2实例的Reader中调用close()方法。
public void close() { in.close(); }