2012-04-20 100 views
1

您可以使用CustomFieldSerializer来定义对象的自定义序列化和反序列化。为什么CustomFieldSerializer需要静态方法?

这表面上是很容易定义自定义序列化的Xxx类:

  • 创建一个名为Xxx_CustomFieldSerializer扩展CustomFieldSerializer<Xxx>类,
  • 实现抽象方法serializeInstancedeserializeInstance,以及可选instantiateInstance

这会产生一个极大编译归结为以下错误:

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'中放置一个断点来调试问题。 – 2012-04-21 09:42:19

+0

请注意,该变更列表中的所有CFS均实施静态方法,因此我不确定这是否应该起作用。你的意思是在编译器中调试?是的,我会尝试。 – 2012-04-23 08:10:09

+1

哦,看起来像'com.google.gwt.user.rebind.rpc'(不是那种改变)需要静态方法,而这些实例方法只是服务器端的优化。 – 2012-04-23 11:20:01

回答

相关问题