我有一些 HashMap:
Map<SearchConfig, Object> searchParams;
Object可以是简单的类型,比如String,也可以是简单的实体:
public class SearchDataEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public SearchDataEntity() {}
private String startDate;
private String endDate;
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}
当我将其发送到服务器时,出现 SerializationException。
如果我将 SearchDataEntity 与 Map 分开发送就可以了。
最佳答案
您告诉 GWT 编译器 Map 将包含一个 Object。然后您尝试传递字符串或 SearchDataEntity 而不是对象。编译器没有预料到这一点,并且在此序列化策略中没有包含处理 String 或 SearchDataEntity 的方法。
这样想:如果您为 Map 指定“Animal”而不是“Dog”,编译器将不知道如何处理方法 isBarking()
当您传递 Dog 对象时。
您需要使用特定的HashMap<SearchConfig, SearchDataEntity>
或HashMap<SearchConfig, String>
在您的 RPC 调用中。
另外,最佳实践是使用 HashMap
而不是Map
用于 RPC 调用。同样,编译器尝试包含尽可能少的代码。通过指定Map
你强制编译器做比必要的更多的工作(它必须寻找使用此映射的每种情况,以了解可能需要什么实现),并且可能会导致代码比必要的更大。
关于java - GWT - 当我发送 Map<Object, Object> 时出现 SerializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24762397/