Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сериализовать несериализуемый объект? сериализация без implements Serializable 
:(
    Опции темы
Lakie
Дата 4.2.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.2.2008

Репутация: нет
Всего: нет



Доброго времени суток всем!
У меня возникла такая проблема:  есть класс, который должен проводить сериализацию и десериализацию объекта.
Как можно сделать так, чтоб в случае передачи несериализуемого обьекта в этот класс не генерировал NotSerializableException, а корректно самостоятельно сериализовывал этот обьект. smile 
PM MAIL   Вверх
skyboy
Дата 4.2.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



через рефлексию можно сделать. только не знаю, насколько это оптимально...
иы собираешься писать универсальный класс сериализатор? если нет - то не проще ли сделать-таки класс, реализующий Serializeable?
PM MAIL   Вверх
alex_nevolin
Дата 4.2.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 13.8.2007

Репутация: 3
Всего: 4



PM MAIL   Вверх
Lakie
Дата 4.2.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.2.2008

Репутация: нет
Всего: нет



спасибо, щас посмотрю
Цитата

иы собираешься писать универсальный класс сериализатор

вообще-то я какраз и собираюсь сделать универсальный класс для сериализации smile
PM MAIL   Вверх
Lakie
Дата 4.2.2008, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.2.2008

Репутация: нет
Всего: нет



alex_nevolin, спасибо, статья хорошая, но не то, мне надо, чтоб можно было обойтись без Serializable и Externalizable, я ведь не знаю, наследует ли объект эти интерфейсы

skyboy, я может неправильно понял, но в рефликсия не подходит.... если я ошибаюсь, обьясните новичку, как этим пользоваться smile 

Это сообщение отредактировал(а) Lakie - 4.2.2008, 17:55
PM MAIL   Вверх
COVD
Дата 4.2.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Lakie, имплементация интерфейса Serializable - это всего лишь метка, ярлык, которым разработчики классов указывают, что класс можно сериализовать стандартным способом. Некоторые разновидности классов в принципе сериализовать нельзя, потому что их содержимое динамически меняется или это бесмысленно. Например, java.sql.ResultSet или классы, описывающие сетевые соединения. 
PM MAIL   Вверх
Lakie
Дата 4.2.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.2.2008

Репутация: нет
Всего: нет



Цитата

имплементация интерфейса Serializable - это всего лишь метка, ярлык, которым разработчики классов указывают, что класс можно сериализовать стандартным способом. Некоторые разновидности классов в принципе сериализовать нельзя, потому что их содержимое динамически меняется или это бесмысленно.

так что мне делать? мне необходимо, чтоб обьект превращелся в массив байтов, при этом неизвесно, сериализуем он или нет
PM MAIL   Вверх
alex_nevolin
Дата 4.2.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 13.8.2007

Репутация: 3
Всего: 4



Lakie
Как вы сериализуете java.sql.ResultSet? 
Вам же говорят что есть классы, сериализация которых очень сложна или невозможна без знаний внутренней реализации класса.
Т.е. написать фреймворк который сереализует что угодно на мой взгляд нельзя.
PM MAIL   Вверх
COVD
Дата 4.2.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

есть классы, сериализация которых очень сложна или невозможна 


я бы сказал - бессмысленна. Можно вручную сериализовать сокетное соединение, превратить его в массив байт и сохранить на диске, или переслать на другой компьютер. Потом восстановить из массива обьект сокетного соединения. Но этот обьект не будет представлять собой работающее соединение. Это введение в заблуждение потребителей сериализованных обьектов.  

Lakie   - ваше задание имеет смысл только в ситуации, когда вы хотите сериализовать заведомо "сериализуемые" обьекты, разработчики которых просто "забыли" поставить на них "штампик" Serializable , т.е. как исправление  упущений авторов классов. Если же разработчик класса сознательно не указал , что его класс можно сериализовать, т.е. класс бессмысленно сериализовать, то ничего хорошего из сериализации не выйдет.

Если вы не имеете возможности обсуждать постановку задачи, то вам наверное надо делать свой сериализатор, который делает все то же, что и стандартный, за исключением проверки наличия "штампика" Serializable.  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0753 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.