Какова цель интерфейса IsSerializable в GWT (относительно механизма RPC). Я никогда не мог найти хорошее объяснение, почему это так, и почему интерфейс Java Serializable по умолчанию не работает.Какова цель интерфейса IsSerializable в GWT (относительно механизма RPC)
ответ
Оба Serializable
и IsSerializable
работы, в соответствии с GWT serialization docs: А определенного пользователем класса
сериализует, если все из следующих действий:
- Это присваиваемое IsSerializable или Сериализуемым, либо потому что он непосредственно реализует один из этих интерфейсов или потому, что он получен из суперкласса, который делает
- Все нефинансовые, непереходные поля экземпляров сами сериализуемы и
- Начиная с GWT 1.5, он должен иметь конструктор по умолчанию (нулевой аргумент) (с любым модификатором доступа) или вообще без конструктора.
Одно из ключевых различий, хотя в том, что, по соображениям безопасности, все Serializable
классы должны быть включены в политике сериализации, который генерируется во время компиляции, в то время как IsSerializable
классов не имеет это требование.
Если вы заинтересованы исключительно в GWT, а вы не , т.е. поделитесь своими классами моделей между веб-приложением и другим приложением, я предлагаю, чтобы ваши классы моделей/DTO реализовали IsSerializable
.
Если вы поделитесь своими объектами с другими программами используйте Serializable как это стандартная функция библиотеки Java,
Но если вы только хотите, чтобы передать его между сервером и клиентом в GWT затем использовать IsSerializable. Это поможет вам убедиться, что вы не можете начать передавать его в места, в которые он не должен идти.
Noob иностранный вопрос здесь. Что вы подразумеваете под «непереходными полями экземпляров»? – Jla
@DrDro: поля, не отмеченные модификатором 'transient'. –
Имеет ли необходимость в политике сериализации какие-либо практические недостатки, например. требующих дополнительного времени обработки, ...? –