Качели компонентов и сериализация - PullRequest
20 голосов
/ 08 октября 2009

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

Ответы [ 2 ]

16 голосов
/ 09 октября 2009

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

3 голосов
/ 09 октября 2009

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

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

Существуют ли более эффективные способы удаления [предупреждений]?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...