2

我正在尝试通过 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. (服务器永远不会被击中。)Fooin的唯一类型fooMap来自此类:

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>问题吗?

4

1 回答 1

2

Class<? extends Foo>很可能是个问题。据我所知,GWT 根本不知道如何序列化-反序列化Class实例(它的代码仅用于序列化普通对象、枚举和数组,并且没有 CustomFieldSerializer)。所以尝试使用类名而不是Class实例。

于 2012-04-05T13:40:13.117 回答