2

在 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()?

4

1 回答 1

4
Reader in = new InputStreamReader (System.in);
Reader2 translated = new Reader2(in, "abc", "ABC");

您创建一个输入流阅读器并将其传递给您的翻译阅读器。要关闭 Reader2 实例,您只需调用构造函数传递给 Reader2 实例的 Reader 中的 close() 方法new Reader2(in, "abc", "ABC");

public void close() { in.close(); }
于 2013-09-28T23:32:24.757 回答