Какова цель интерфейса IsSerializable в GWT (относительно механизма RPC) - PullRequest
22 голосов
/ 17 июня 2010

Какова цель интерфейса IsSerializable в GWT (в отношении механизма RPC).Мне никогда не удавалось найти хорошее объяснение того, почему это так и почему не работает стандартный интерфейс тегов Java Serializable.

Ответы [ 2 ]

25 голосов
/ 18 июня 2010

Оба Serializable и IsSerializable работают в соответствии с документами по сериализации GWT :

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

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

Одно из ключевых отличий заключается в том, что по соображениям безопасности все классы Serializable должны быть включены в политику сериализации, которая генерируется во время компиляции, в то время как классы IsSerializable не имеют этого требования.

Если вашинтерес исключительно к GWT, и вы не например не делитесь своими классами моделей между веб-приложением и другим приложением, я предлагаю вам иметь модельsses / DTO реализуют IsSerializable.

6 голосов
/ 18 июня 2010

Если вы делитесь своими объектами с другими программами, тогда используйте Сериализуемый , поскольку это стандартная функция библиотеки Java,

Но если вы хотите передать его только между сервером и клиентом вGWT тогда используйте IsSerializable .Это поможет вам убедиться, что вы не можете начать передавать его туда, куда он не должен идти.

...