在GWT中我得不到类Exception的类型签名

时间:2017-12-08 13:07:47

标签: java gwt

我在GWT中定义了一个类如Generic类的类。当我使用类型扩展此类或为此类指定类型时,一切都没问题,但在运行时我得到“无法获取类Filter的类型签名”消息。

@SuppressWarnings("serial")
public class Filter<T extends Serializable> implements Serializable {
     private FilterInfo<T> info;
     private T value;

     public Filter() { }

     public FilterInfo<T> getInfo() {return info;}
     public void setInfo(FilterInfo<T> info) { this.info = info; }
     public T getValue() { return value; }
     public void setValue(T value) {this.value = value;}
}

我从上面的类中删除下面的代码,然后类正常工作。

private FilterInfo<T> info;

但FilterInfo具有使用的所有先决条件(Serializable,T extends Serializable,默认构造函数)

@SuppressWarnings("serial")
public class FilterInfo<T extends Serializable> implements Serializable {
private String name;
private Class<?> type;

public FilterInfo() { }
public FilterInfo(String name, Class<?> type) {
    setName(name);  setType(type.getClass());
}

public String getName() { return name; }
...

1 个答案:

答案 0 :(得分:2)

Class<?>不可由GWT序列化,因此FilterInfo也不可序列化,因此Filter也不是type。考虑到编译器需要保留编译器可以访问的所有可能的类文字,以便支持这一点。

相反,要么找到一种不同的方式来描述FilterInfo数据,要么为TradingView构建一个CustomFieldSerialize,它可以从流中读取并找出要用作类型的类,如果有的话您支持的简单列表,或者制作注册表的简便方法。