Почему класс Swing JComponent
реализует интерфейс Serializable
? То, как я реализовал свои представления, они не имеют состояния, все данные состояния хранятся в модели представления. Поэтому мне не нужно сериализовывать мои взгляды. Я использовал аннотацию @SuppressWarnings("serial")
, чтобы удалить предупреждения. Есть ли способы удалить их?
Компоненты Swing и сериализация
Ответ 1
Вначале разработчики GUI собирались сохранить пользовательский интерфейс в сериализованном формате. Тег applet
имеет атрибут для загрузки из сериализованной формы (я не знаю никого, кто использовал это, и я использовал его только для злонамеренного использования). К сожалению, использование механизма сериализации для графических интерфейсов на самом деле не работает. Swing гарантирует только совместимость в одном и том же выпуске (и я предполагаю, что это даже мало тестов).
Ответ 2
Почему класс Swing JComponent реализует интерфейс Serializable?
Хотя это позволяет сериализовывать классы и отправлять их на клиент и на сервер, это не похоже на интуитивный сценарий. Существует более высокий шанс, по-прежнему тонкий, что кто-то может захотеть сериализовать компоненты в файл. Это позволит выполнить такую сериализацию.
Есть ли лучшие способы удалить [предупреждения]?
Вы можете создать экземпляр serialVersionUID, но если вы это сделаете, вам нужно будет поддерживать его при изменении класса. Это кажется излишним. Другой вариант, как указывает Лоуренс Гонсалвис в своем комментарии, заключается в том, чтобы полностью подавить предупреждения в поле "Предпочтения- > Java- > Компилятор- > Ошибки/Предупреждения- > Потенциальные проблемы программирования.