0

我正在使用 gwt 并且正在使用 mapdb,当我将数据作为地图 (BTreeMap) 检索时,gwt 会引发 rpc 序列化异常。我将地图包装在一个实现但不起作用的对象SerializableIsSerializable

我不知道为什么这不起作用,因为我阅读了 mapdb 的文档并且我正确使用了它。

那是代码:

public class WrapperObject implements Serializable, IsSerializable {

          private Map<String, List<String>> map;

          public WrapperObject() {}
          public WrapperObject(Map<String, List<String>> map) {
              this.map = map;
          }
          //GETTERS AND SETTERS
          ...
}


public class Prova {
    ....

    private DB openDB() {
        return DBMaker.shoutdownOnJvmClose().make();
    }

    ...

    public WrapperObject retrieveData() {
        DB db = this.openDB();

        Map<String, List<String>> map = 
        db.getTreeMap("values");

        return new WrapperObject(map);
    }
}

然后在客户端类中,我使用地图创建了一个带有 treeItem 的树。

谢谢你的帮助。

4

1 回答 1

1

问题是,那Map不是Serializable

即您WrapperObject的标记为Serializableand IsSerializable,但并非所有成员都以这种方式标记(请参阅Mapand the Wrapped List)。

要解决此问题,您可以将类型更改为可序列化map的实现(例如,使用):MapLinkedHashMapArrayList

private LinkedHashMap<String, ArrayList<String>> map;
于 2016-05-04T08:46:55.833 回答