【发布时间】:2012-04-18 18:24:26
【问题描述】:
我正在尝试通过 GWT RPC (GWT 2.4) 发送对象。该对象包括一个包含以下字段的对象:
@Serialized
private Map<Class<? extends Foo>, Foo> fooMap = ImmutableMap.of();
Foo 定义为:
public interface Foo extends Serializable {
}
当fooMap 为空时,它可以正常工作。填充后,GWT RPC 失败并显示SerializationException。 (服务器永远不会被击中。)fooMap 中唯一的 Foo 类型来自此类:
public class FooImpl implements Foo {
private static final long serialVersionUID = 1L;
private long bar;
private float baz;
private int batz;
...
}
我做错了什么? FooImpl 不应该引起任何问题。每个类都有一个无参数构造函数。我不需要每个序列化对象的每个私有字段的 getter 和 setter,对吗? Class<? extends Foo> 有问题吗?
【问题讨论】:
-
对象本身的定义在哪里?除了您的
fooMap之外,它是否包含任何内容? -
对象本身是
Serializable,当fooMap被删除或为空时可以正常工作。 -
我倾向于查看您正在使用的 Map 实现的 GWT 序列化特征。
-
尝试手动为 FooImpl 类创建默认构造函数。它应该可以解决您的问题。
标签: java gwt serialization gwt-rpc objectify