Какова цель интерфейса IsSerializable в GWT (относительно механизма RPC). Я никогда не мог найти хорошее объяснение, почему это так, и почему интерфейс Java Serializable по умолчанию не работает.
Какова цель интерфейса IsSerializable в GWT (относительно механизма RPC)
Ответ 1
Оба Serializable
и IsSerializable
работают в соответствии с документацией по сериализации GWT:
Пользовательский класс сериализуется, если применимы все следующие условия:
- Он присваивается IsSerializable или Serializable либо потому, что он непосредственно реализует один из этих интерфейсов, либо потому, что он происходит от суперкласса, который выполняет
- Все нефинансовые, непереходные поля экземпляров сами являются сериализуемыми и
- Начиная с GWT 1.5, он должен иметь конструктор по умолчанию (нулевой аргумент) (с любым модификатором доступа) или вообще без конструктора.
Одно из ключевых различий заключается в том, что по соображениям безопасности все классы Serializable
должны быть включены в политику сериализации, которая генерируется во время компиляции, тогда как классы IsSerializable
не имеют этого требования.
Если ваш интерес является исключительно в GWT, и вы не являетесь, например, поделитесь своими классами моделей между веб-приложением и другим приложением, я предлагаю вам реализовать ваши классы моделей /DTO IsSerializable
.
Ответ 2
Если вы делитесь своими объектами с другими программами, используйте Serializable поскольку это стандартная java-библиотека,
Но если вы хотите передать его только между сервером и клиентом в GWT, используйте IsSerializable. Это поможет вам убедиться, что вы не можете начать передавать его в те места, в которые он не должен идти.