Я хочу создать свой класс CustomReader
путем подкласса класса java.io.Reader
. Мой CustomReader
обернется вокруг другого BufferedReader
, который считывает фактический ввод, и из которого мой собственный перевод ввода добавляется и возвращается моему абоненту. (Это называется рисунком Decorator?)Как создать пользовательский класс чтения в Java
В javadoc только close
и read(char[] cbuf, int off, int len)
класса Reader
являются абстрактными методами, но другие - нет. Но какую реализацию по умолчанию я могу ожидать от этих других не абстрактных методов, унаследованных от java.io.Reader
? Например, если кто-то вызовет мой read()
, который унаследован от класса Reader
, вызовет ли он мою реализацию read(char[] cbuf, int off, int len)
, чтобы получить вход? Также как метод Reader
ready()
определяет его возвращаемое значение? Поскольку это не абстрактно, и мне не нужно обеспечивать реализацию.
Нужно ли мне пересылать все унаследованные методы от Reader
до BufferedReader
Обертывание - будь то абстрактным или нет?
переопределение, а затем делегирование является более безопасным и лучшим советом. Нет? –
Делегирование на что? Если вы делегируете свой собственный метод read (char [] cbuf, int off, int len), то ваша реализация будет такой же, как и в Reader. И если вы делегируете обернутому читателю, то ваш пользовательский читатель больше не добавляет никакого пользовательского поведения. Но совершенно бессмысленно обсуждать лучший способ, не зная, что ваш пользовательский читатель должен делать в любом случае. –