Тип объекта для чтения типа? - PullRequest
0 голосов
/ 12 апреля 2010

У меня есть java.io.Reader в качестве типа возврата моего метода. Но у меня есть тип объекта экземпляра, который я получаю из базы данных. Так как я могу преобразовать это в тип Reader и вернуть?

У меня есть следующий код, где getByteArrayObject () возвращает байтовый массив. и то же самое мне нужно вернуть, но тип возвращаемого значения - Reader, который я не могу изменить.

 public Reader getMediaReader(String arg0) {
    // TODO Auto-generated method stub
    Object obj  = getByteArrayObject();
    System.out.println("HELLO I AM DETCTED....... in getMediaReader");
    return null;
    }

нужна помощь спасибо.

Ответы [ 3 ]

3 голосов
/ 12 апреля 2010

На основании вашего отредактированного вопроса ...

Если предположить, что байтовый массив, возвращаемый getByteArrayObject(), является текстовым кодированием в некотором известном наборе символов / кодировке, тогда должно быть достаточно следующего:

 public Reader getMediaReader(String arg0) throws IOException {
     byte[] bytes = getByteArrayObject();
     return new InputStreamReader(
                new ByteArrayInputStream(bytes), ENCODING_NAME);
}

где ENCODING_NAME - название кодировки.

EDIT - я бы рискнул предположить, что параметр arg0 должен содержать имя кодировки.

2 голосов
/ 12 апреля 2010

Ну, как звонящий ожидает прочитать данные? Что они ожидают получить?

Звучит так, как будто вы могли бы захотеть сериализоваться в какой-нибудь текстовый формат (JSON? XML?), А затем вернуть StringReader, который позволит клиенту читать эти данные. Но это действительно зависит от того, что ожидает клиент ... и вам, возможно, придется написать аналогичный метод для создания нового экземпляра вашего объекта на основе этих текстовых данных.

Стоит задуматься о версиях, когда вы тоже думаете о сериализации - как только вы освоите основы того, что вы хотите сделать, подумайте о том, что должно произойти, если вы когда-нибудь добавите поле в свой класс. Как вы будете читать старые данные? Что будет делать старый код с вашими новыми данными? Насколько совместимы обратная и прямая связь?

1 голос
/ 12 апреля 2010

Сначала я хотел бы уточнить, что в Java нет концепции автоматического преобразования одного объекта в другой. Какие объекты вы получаете из БД? Если это само по себе сериализованная версия объекта для чтения, то при десериализации вы должны вернуть объект для чтения. Если вы хотите построить объект чтения из содержимого в объекте, предполагая, что есть строковые данные, которые вы хотите прочитать, вам нужно создать StringReader и вернуть его обратно, так как это расширяет ридер.

Класс Reader в Java представляет иерархию потоков символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...