Java GWT和泛型
使用RPC和Java泛型发送对象列表时出现SerializationException错误 我正在创建此小部件以显示错误:Java GWT和泛型,java,gwt,generics,Java,Gwt,Generics,使用RPC和Java泛型发送对象列表时出现SerializationException错误 我正在创建此小部件以显示错误: public class Test<T> { ListDataProvider<T> ldp = new ListDataProvider<T>(); public void setItems(List<T> list){ for(T t :list){ ldp.ge
public class Test<T> {
ListDataProvider<T> ldp = new ListDataProvider<T>();
public void setItems(List<T> list){
for(T t :list){
ldp.getList().add(t);
}
}
public List<T> getItems(){
return ldp.getList();
}
}
下一个很好:
service.sendList(list, new AsyncCallback...);
-----编辑----
我发现编写下一个代码也很有效
List<ExporterFormKey> newList = new ArrayList<ExporterFormKey>();
newList.add(test.getItems().get(0));
service.sendList(newList , new AsyncCallback...);
List<ExporterFormKey> newList = new ArrayList<ExporterFormKey>(test.getItems());
List newList=newarraylist();
添加(test.getItems().get(0));
sendList(newList,newasyncCallback…);
或者这也行
List<ExporterFormKey> newList = new ArrayList<ExporterFormKey>();
newList.add(test.getItems().get(0));
service.sendList(newList , new AsyncCallback...);
List<ExporterFormKey> newList = new ArrayList<ExporterFormKey>(test.getItems());
List newList=newarraylist(test.getItems());
我在测试工作中也发现了这种变化
public List<T> getItems(){
return new ArrayList<T>(ldp.getList());
}
公共列表getItems(){
返回新的ArrayList(ldp.getList());
}
正如izaera所建议的,ListDataProvider使用不可序列化的列表实现(ListWrapper),该实现不能直接通过网络发送
按照您在文章中的建议,将ListDataProvider的getList()方法的响应包装到新的ArrayList中是解决此问题的最简单方法 您可能必须强制转换test.getList()以键入List或用声明test。您的ListDataProvider()可能不是返回ArrayList,而是返回List的另一个实现(例如Collections.unmodifiableList())返回的是list或AbstractList派生的类型。请发布完整的SerializationException和服务器日志好吗?它应该说明序列化失败的原因,以及哪个类有问题。如果有人访问此处寻求答案,则上面的链接现在已失效,并返回404。该页面似乎也未被缓存。