Подтвердить что ты не робот

Компоненты Swing и сериализация

Почему класс Swing JComponent реализует интерфейс Serializable? То, как я реализовал свои представления, они не имеют состояния, все данные состояния хранятся в модели представления. Поэтому мне не нужно сериализовывать мои взгляды. Я использовал аннотацию @SuppressWarnings("serial"), чтобы удалить предупреждения. Есть ли способы удалить их?

4b9b3361

Ответ 1

Вначале разработчики GUI собирались сохранить пользовательский интерфейс в сериализованном формате. Тег applet имеет атрибут для загрузки из сериализованной формы (я не знаю никого, кто использовал это, и я использовал его только для злонамеренного использования). К сожалению, использование механизма сериализации для графических интерфейсов на самом деле не работает. Swing гарантирует только совместимость в одном и том же выпуске (и я предполагаю, что это даже мало тестов).

Ответ 2

Почему класс Swing JComponent реализует интерфейс Serializable?

Хотя это позволяет сериализовывать классы и отправлять их на клиент и на сервер, это не похоже на интуитивный сценарий. Существует более высокий шанс, по-прежнему тонкий, что кто-то может захотеть сериализовать компоненты в файл. Это позволит выполнить такую ​​сериализацию.

Есть ли лучшие способы удалить [предупреждения]?

Вы можете создать экземпляр serialVersionUID, но если вы это сделаете, вам нужно будет поддерживать его при изменении класса. Это кажется излишним. Другой вариант, как указывает Лоуренс Гонсалвис в своем комментарии, заключается в том, чтобы полностью подавить предупреждения в поле "Предпочтения- > Java- > Компилятор- > Ошибки/Предупреждения- > Потенциальные проблемы программирования.