2012-04-20 4 views
1

Для определения пользовательской сериализации и десериализации для объекта используется CustomFieldSerializer.Почему для CustomFieldSerializer нужны статические методы?

Это якобы легко определить пользовательские сериализации для вашего класса Xxx:

  • создать класс под названием Xxx_CustomFieldSerializer, который расширяет CustomFieldSerializer<Xxx>,
  • реализовать абстрактные методы serializeInstance и deserializeInstance, и необязательно instantiateInstance.

Это порождает Gazillion ошибки компиляции, которые сводятся к следующему:

subtype Custom Field Serializer 'Xxx_CustomFieldSerializer' does not define a deserialize method: 'public static void deserialize(SerializationStreamReader reader,Xxx instance)' (reached via Xxx)' 

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

Почему? Это только что осталось от старой версии GWT или чего-то еще? Есть ли способ избежать необходимости писать все лишние вещи?

+1

Не могли бы вы показать код? Это [_should_ work] (http://code.google.com/p/google-web-toolkit/source/detail?r=9592). Кроме того, поместите контрольную точку в 'com.google.gwt.user.server.rpc.impl.SerializabilityUtil # loadCustomFieldSerializer' для отладки проблемы. –

+0

Обратите внимание, что все CFS в этом списке изменений реализуют статические методы, поэтому я не уверен, как это доказывает, что он должен работать. Вы имеете в виду отладку в компиляторе? Да, я попробую. –

+1

О, похоже, что 'com.google.gwt.user.rebind.rpc' (не в этом изменении) требует статических методов, и эти методы экземпляра - это только оптимизация на стороне сервера. –

ответ