Что Сериализуемое или нет в GWT? - PullRequest
2 голосов
/ 21 марта 2011

У меня есть этот простой объект в моем проекте GWT.Я не могу отправить это по телеграфу.Разве нельзя поместить конструктор в такой класс?

public class MceDto implements IsSerializable {
    public MceDto(String uri, String tag) {
        this.uri = uri;
        this.tag = tag;
    }

    public String uri;

    public String tag;

    public Date created;
}

Я проверил политику * .gwt.rpc, и объект там отсутствует, то есть он не сериализуем или что-то в этом роде.Как узнать заранее, можно ли сериализовать объект?

Спасибо

1 Ответ

6 голосов
/ 21 марта 2011

Какую версию GWT вы используете?

Интерфейс IsSerializable является пережитком GWT pre-1.4. Вы пытались использовать стандартный маркерный интерфейс Java java.io.Serializable?

Подробнее см. в этом GWT FAQ .


Согласно документам по сериализации GWT :

Пользовательский класс является сериализуемым, если применимо все следующее:

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

Таким образом, вы должны предоставить конструктор без аргументов, чтобы ваш класс был сериализуемым GWT.

...