2010-06-17 1 views

ответ

23

Оба Serializable и IsSerializable работы, в соответствии с GWT serialization docs: А определенного пользователем класса

сериализует, если все из следующих действий:

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

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

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

+0

Noob иностранный вопрос здесь. Что вы подразумеваете под «непереходными полями экземпляров»? – Jla

+0

@DrDro: поля, не отмеченные модификатором 'transient'. –

+0

Имеет ли необходимость в политике сериализации какие-либо практические недостатки, например. требующих дополнительного времени обработки, ...? –

6

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

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