|
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73
|
||||||
Serializable не сериализуется16.06.2013, 04:57. Показов 3530. Ответов 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 | |
|
Помогаю со студенческими работами здесь
32
WCF. System.Data.SqlTypes.SqlString не сериализуется? Переменная скрипта сериализуется в файл, но не десериализуется обратно Serializable О Serializable Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|