java - 在 GWT 中,我无法获得类异常的类型签名

标签 java gwt

我在 GWT 中定义了一个具有通用类型的类,如下所示。当我用一个类型扩展这个类或为这个类指定一个类型时,一切都很好,但在运行时我收到“无法获得类 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, default Constructor)

@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; }
...

最佳答案

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

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

关于java - 在 GWT 中,我无法获得类异常的类型签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47715049/

相关文章:

java - 同时使用 Button 和 Tab?

java - Android 中的 slider 开关

java - 安全地清除(或删除子元素)DivElement

java - 如何按类别过滤列表?

java - 我们可以在 GAME 中使用 Set 或集合作为返回类型吗?

Java 8 Stream API toMap 转换为 TreeMap

java - 简单的 Android 应用程序即将 OOM

java - 在 Gradle 中使用 pom 依赖制作 jar

java - 如何让 GWT 编译多个模块?

gwt - 将 GWT 小部件插入到 div 元素中