Если вы действительно хотите избежать использования ключевого слова transient , вам может понадобиться Сериализаторы пользовательских полей .
В моем последнем проекте GWT я использовалим сериализовать неизменяемые классы, так как GWT-RPC имел ограничения для них.
Это плохо документированная функция, и лучшее объяснение, которое я нашел в то время, было не в документации GWT, а на это здоровоwogwt wiki page .Вы также можете найти некоторые примеры в пакете GWT com.google.gwt.user.client.rpc.core , поскольку GWT использует многие из них.
Обратите внимание, что в CustomFieldSerializer все еще есть некоторыепроблемы, такие как выпуск 2931 и выпуск 3315 .Кроме того, мне не нравится, как они определяются: вместо использования статических методов было бы лучше позволить пользователям реализовать интерфейс CustomFieldSerializer<T>
.Мы бы получили безопасность типов и наследство.Но это совсем другой спор, и компилятор GWT может фактически разрешить использование этих статических методов по соображениям производительности (я не рассматривал это).
Тем не менее, это работает, и хорошо иметьих в особых случаях.