|
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73
|
||||||
Serializable не сериализуется16.06.2013, 04:57. Показов 3700. Ответов 31
Метки нет (Все метки)
Всем привет. Пытаюсь реализовать в игре функции "save game" и "load game". Пока в простом окошке хочу сделать так, чтобы оно при нажатии "save" запоминало своё состояние (цвет), а потом при вызове "load" вызывало (перекрашивало себя) в запомненное состояние. Сейчас при нажатии на "save" возникает java.io.NotSerializableException. Но я ведь объявил класс сериализуемым. Подскажите пожалуйста что не так делаю.
Кликните здесь для просмотра всего текста
0
|
||||||
| 16.06.2013, 04:57 | |
|
Ответы с готовыми решениями:
31
Для чего написано: import java.io.Serializable; public class person implements Serializable?
|
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
||||||||||||
| 19.06.2013, 16:03 | ||||||||||||
|
Провел тест и вправду по производительности разницы нету и занимает одинаковое кол-во памяти ...
Вот тест ) (лучше не заглядовать)) Кликните здесь для просмотра всего текста
Добавлено через 8 минут но вот в исходах Stringа .
0
|
||||||||||||
|
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73
|
||||||
| 19.06.2013, 20:59 [ТС] | ||||||
|
А с моим вопросом кто нибудь поможет? Никак не разберусь почему Observer больше не наблюдает за моделью. И если той же JPanel ещё и MausListener назначаю, то он тоже после сериализации "слетает".
из предыдущего поста
если я в метод loadGame() вставляю вот эти строки
, то после вызова метода loadGame, цвет панели всё также меняется, но кнопки смены цвета перестают реагировать на новую панель. Т.е. выглядит так, как будто она больше не является Observer для класса GameInterface (который в свою очередь Observable конечно), хотя она и было зарегистрирована (строка 96: giObj.addObserver(gfObj)) у этого класса ещё до сериализации. В чём же тут дело?[/QUOTE] Добавлено через 42 минуты вот нашёл что-то похожее в сети. Решение здесь предлагается следующее "соорудить свои Observable implements Serializable; Observer и юзать их" Задача у меня такая же, как у того ТС из ссылки: "Хотелось сделать прогу в соответствии с MVC, т.е. чтобы классы данных были Observable. А как раз эти классы и нужнаются в сериализации." И что? Значит теперь отказываться от MVC? А что, если игра уже написана по принципу MVC и теперь нужно только реализовать/добавить в ней функции "save и load" использующие механизм сериализации? Всё заново переписывать? Должен же быть какой-то выход? То предлагаемое решение для меня вообще тёмный лес.
0
|
||||||
|
|
||
| 20.06.2013, 03:13 | ||
|
представьте себе 3 проперти в объекте и он сериализован, вы обновляете игру на новую версию, а там уже 4 проперти в нём же. Ну и как вы представляете в таком случае десереализацию этого класса? Должен быть отдельный класс инициализирующий все действующие объекты и запускающий игру на старт, если обьектов нет инит дефолт значением. Для этого понадобится хранить свои параметры в хешмапе ключ-значение и какнибудь пошифровав уже этот хешмап сериализовать. Тогда проблем с десериализацией не будет никогда. Если же игру невозможно запустить с любой точки наполнив её параметрами - значит она неправильно спроектирована.
0
|
||
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
||
| 21.06.2013, 10:50 | ||
|
Добавлено через 1 минуту ЗЫ а так конечно все Обертки и Объекты нуно сравнивать через метод эквивалентности...
0
|
||
|
|
|||
| 21.06.2013, 10:59 | |||
|
0
|
|||
|
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73
|
|
| 23.06.2013, 02:37 [ТС] | |
|
Товарищи, моя борьба с сериализацией продолжается. С комментариями и благодарностями mutagen-у и AckiyBolt-у потом отпишусь. Сейчас у меня возникла следующая проблема. Я сериализую объекты в файл, потом десериализую их и использую, но если я пытаюсь десериализовать их снова, то возникает end of file exception. Skipy в какой-то из тем на форуме не двусмысленно намекнул, что указатель или маркер находится уже в конце файла, что и приводит к этому исключению. Правда не сказал как этого избежать. Вопрос - как установить маркер на интересующую меня позицию?
p.s. Использую FileInputStream . Где-то вычитал, что он не маркируемый.
0
|
|
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
||
| 24.06.2013, 11:02 | ||
|
Может, Вы все-таки приведете код, который пишет в файл, и код, который из него читает? Или мы должны на хрустальном шаре гадать, что Вы не так сделали?
0
|
||
|
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73
|
|||||||||||||||||||||
| 26.06.2013, 19:28 [ТС] | |||||||||||||||||||||
|
Skipy Я читал, но про установку маркера не нашёл. К тому же, если бы прочитанное было бы мною однозначно понято, то я бы и не стал здесь спрашивать. Просто надеюсь на опыт экспертов, которые на пальцах могут объяснить что к чему, когда задаю здесь вопрос теоретического характера.
Игру переписал. endoffile обработал. Теперь появляется ClassCastException. метод undo() из контроллера (MVC)
часть кода из модели (MVC)
класс сериализующий модель
Не пойму почему он ругается именно на getGamerXpos(). Ведь он возвращает int, а в исключении Ljava.lang.String; написано. Какой String он имеет в виду.. Добавлено через 2 часа 50 минут Интересно то, что сначала метод undo() у меня выглядел так
и десериализация получалась. Но игрок не двигался по полю. Стало понятно, что он не двигается потому, что игре не известны его координаты, которые я и добавил используя методы getGamerXpos getGamerYpos. И всё, больше никаких изменений не делал. Но теперь, даже возвращая всё к прежней записи, опять то же самое исключение. Может что-то с serialVersionUID не так? Я его сначала вообще не вписывал.
0
|
|||||||||||||||||||||
|
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73
|
|||
| 05.07.2013, 00:44 [ТС] | |||
|
Извиняюсь за панику на борту. На самом деле с сериализацией было всё нормально. Просто забыл одну строчку в коде исправить после копипаста, когда экспериментировал с сериализацией. Всем спасибо за помощь. Сообщения давшие мне важное понимание или приблизившие меня к цели пометил плюсиком)
Исходники выложил сюда Тем, кто возьмётся просмотреть код, буду благодарен за комментарии, наставления, поправки, критику. Можно в личку.
0
|
|||
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|||
| 05.07.2013, 11:07 | |||
Не по теме: Я недавно тоже на эти грабли наступил - в методе записи пропустил одно поле, а при чтении его считал. Естественно, получил EOF. Удивился, полез в код, поправил - всё, EOF пропал.
0
|
|||
|
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73
|
||
| 05.07.2013, 23:41 [ТС] | ||
|
Больше комментировать нечего. Спасибо за ещё одно объяснение. Раз я всё-таки реализовал в игре функции сохранения и записи, значит я всё понял) Пойду подкорректирую код, чтобы можно было несколько шагов назад возвращать. Ещё раз всем спасибо)
0
|
||
| 05.07.2013, 23:41 | |
|
WCF. System.Data.SqlTypes.SqlString не сериализуется? Переменная скрипта сериализуется в файл, но не десериализуется обратно Serializable О Serializable Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|