Работа с классом EnumSet в GWT - PullRequest
9 голосов
/ 04 апреля 2010

У меня проблемы с использованием EnumSet на стороне клиента.

Я получаю это сообщение об ошибке во время выполнения:

java.util.EnumSet.EnumSetImpl не может быть создан по умолчанию (должен имеет конструктор с нулевым аргументом или вообще не имеет конструкторов) и имеет пользовательский сериализатор отсутствует.

Это известная проблема?

Вот что я делаю (в основном приложение hello world)

Услуги:

String echo (EnumSet<Names> name) throws IllegalArgumentException;

Клиент:

echoServ.echo (EnumSet.of(Names.JOHN), new AsyncCallback<String>()
{ ....... });

Общий перечислимый класс enum Names {ДЖОН, НУМАН, ОБАМА}

Ответы [ 2 ]

4 голосов
/ 04 апреля 2010

Это ограничение GWT - см. http://code.google.com/p/google-web-toolkit/issues/detail?id=3028

Самый простой обходной путь - использовать HashSet, пока он не будет исправлен

0 голосов
/ 04 апреля 2010

Кажется, проблема в том, что EnumSet не сериализуемо в соответствии с правилами GWT:

  1. Его можно присвоить IsSerializable или Serializable, либо потому, что он напрямую реализует один из этих интерфейсов, либо потому, что он наследуетиз суперкласса, который делает
  2. Все неокончательные, непереходные поля экземпляров сами по себе сериализуемы, а
  3. Начиная с GWT 1.5, он должен иметь конструктор по умолчанию (нулевой аргумент) (с любым модификатором доступа) или без конструктора вообще .

См. документы для получения дополнительной информации.

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