| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Список обьектов сохраняемых при сериализации |
| Автор: _Y_ 8.12.2006, 18:31 |
| Пытаюсь сохранить на диске DefaultTableModel используя сериализацию. Как и положено, в ходе выполнения программа ругается на несериализованные объекты (таблица довольно сложная). Послушно добавляю к разным классам Serializable. Вдруг просит сериализировать свойства графика, который к этой таблице отношения, вроде, не имеет (не хранит таблица графики). Мучаюсь несколько часов уже - не могу понять как найти ошибку. Вопрос. Можно ли как-то получить список всех обьектов сохраняемых при сериализации? Спасибо. |
| Автор: shimopus 8.12.2006, 19:04 |
| При сериализации сохраняются все поля сериализуемого объекта. Соответственно, все классы этих объектов должны реализовывать Serializable |
| Автор: _Y_ 9.12.2006, 15:40 | ||
Это понятно. В том-то и Шекспир, что как-то в данные сохраняемой модели затесался объект, который быть там не должен. Сериализовать его можно, наверное, но это будет глупо - зачем он там?. Надо найти где сидит на него ссылка. Вот поэтому и хотелось бы посмотреть список объектов сохраняемых в данном конкретном случае. Станет понятно куда этот лишний объект залез (таблица большая и хранит много объектов). Простой поиск по коду ничего не дал |
| Автор: _Y_ 11.12.2006, 15:25 | ||
| Бьюсь - ничего не получается. Даже с какого конца подлезть - непонятно. Так что ставлю вопрос иначе. Помогите, пожалуйста. Работать должно так: имеется JTabbedPane Под каждой ее закладкой лежит огромная таблица. Память ругается При попытке совершить такое выдается сообщение:
Объект net.sourceforge.chart2d.Object2DProperties содержит свойства графика, который к таблитсе отношения иметь вообще не должен. Из созданных мною объектов здесь только atherodecode.AtheroDecode, остальные библиотечные. Может кто подскажет с какого конца браться за проблему? Спасибо. |
| Автор: LSD 11.12.2006, 15:59 |
| Смотри, у тебя TableModel содержит список листенров. среди них обязательно есть JTable (или один из ее внутренних классов, который уже содержит ссылку на JTable), который тащит за собой все данные: и рендереры, и колонки, и т.д. Тебе нужно сделать так: вначале отсоединять модель от JTable, а затем сериализовывать ее, десериализовывать ее, а затем снова регистрировать в JTable. |
| Автор: _Y_ 11.12.2006, 16:18 | ||
Спасибо большое |
| Автор: LSD 11.12.2006, 17:57 |
Очень просто: у каждого компонента есть ссылка на родительский контейнер. И у каждого контейнера, есть ссылка на все его дочерние компоненты. |
| Автор: _Y_ 11.12.2006, 18:45 | ||
Спасибо. Теперь все понятно |