2

我有一个 gwt 应用程序,在编译期间出现错误:

扫描其他依赖项:file:/D:/projects/healthplanel_trunk/clinics-gwt-client/src/com/clinics/gwt/shared/UserServiceAsync.java 计算 'com.clinics.gwt.shared.UserService 的所有可能重新绑定结果' 重新绑定 com.clinics.gwt.shared.UserService 调用生成器 com.google.gwt.user.rebind.rpc.ServiceInterfaceProxyGenerator 为远程服务接口生成客户端代理 'com.clinics.gwt.shared.UserService' 分析 'com.clinics.可序列化类型的 gwt.shared.UserService' 分析方法:public abstract com.clinics.gwt.shared.query.GQueryResult listAdmins(com.clinics.gwt.shared.query.GQueryParams queryParams) 参数:com.clinics.gwt.shared。询问。GQueryParams queryParams com.clinics.gwt.shared.query.GQueryParams 验证可实例化 com.clinics.gwt.shared.query.GQueryParams 分析符合序列化条件的“com.clinics.gwt.shared.query.GQueryParams”类型字段.util.List> 过滤器 java.util.List> 验证实例化 java.util.Vector> 检查 'java.util.Vector>' 的参数检查类型“java.util.Vector”的类型参数 0,因为它直接暴露在此类型或其子类型之一 com.clinics.gwt.shared.query.GFilterBy 验证实例化 com.clinics.gwt.shared.query。 GFilterBy 检查 'com.clinics.gwt.shared.query.GFilterBy' 的参数 检查类型 'com.clinics.gwt.shared.query.GFilterBy' 类型的参数 0因为它直接暴露在这种类型或其子类型之一中 java.io.Serializable 验证实例化 java.util.HashMap [WARN] 检查符合序列化条件的 Object 的所有子类型HashMap [WARN] 检查所有符合序列化条件的 Object 子类型HashMap [WARN] 检查所有符合序列化条件的 Object 子类型

我的代码是:

public class GQueryParams implements IsSerializable {
private static final long serialVersionUID = 1L;
private int offset = 0;
private int maxCount = -1; // -1 means all
private ArrayList<GOrderBy> orders = new ArrayList<GOrderBy>();
private ArrayList<NoSqlOrderBy> noSqlOrders = new ArrayList<NoSqlOrderBy>();
private ArrayList<GFilterBy<?>> filters = new ArrayList<GFilterBy<?>>();

和:

public class GFilterBy<T extends Serializable> implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private GFilterOperation operation;
private T value;

怎么了,你能帮帮我吗?

4

1 回答 1

4

GFilterBy<?>基本上接受所有内容(实现Serializable的所有内容),因此生成器必须扫描每个适用类的整个类路径并为每个类生成适当的序列/反序列化代码。

这通常不是您想要的,因此发出警告。

经验法则是始终尽可能具体地使用 GWT-RPC 通过线路发送的类型;?显然违反了该规则。

于 2012-08-29T12:33:28.977 回答