2017-12-08 9 views
1

GWTで以下のようなGeneric型のクラスを定義します。このクラスを型で拡張したり、このクラスの型を指定しても問題ありませんが、実行時に「クラスFilterの型シグネチャを取得できませんでした」というメッセージが表示されます。GWTでクラス例外の型シグネチャを取得できませんでした

上記のクラスから以下のコードを削除してから、クラスが正常に動作します。

private FilterInfo<T> info; 

しかしFilterInfoが使用するためのすべての前提条件(シリアライズ、Tが延びるシリアライズ、デフォルトコンストラクタ)

@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

Class<?>を有しているが故に、GWTによってシリアライズませんどちらFilterInfoであり、そのどちらもFilterあります。コンパイラは、これをサポートするために、コンパイラが到達可能なすべての可能なクラスリテラルを残す必要があると考えてください。

代わりに、typeデータを記述、またはストリームから読み込まれ、あなたがサポートする単純なリストがある場合は、型として使用するクラスを見つけ出すことができますFilterInfoためCustomFieldSerializeを構築するための別の方法を見つける、またはどちらかレジストリを作成する簡単な方法です。