私は GWT のシリアライズ可能なクラスを持っています。これを Foo と呼びましょう。Foo は IsSerializable を実装し、プリミティブおよびシリアライズ可能なメンバー、その他の一時的なメンバー、および引数なしのコンストラクターを持ちます。
class Foo implements IsSerializable {
// transient members
// primitive members
public Foo() {}
public void bar() {}
}
また、RPC 通信で Foo インスタンスを使用するサービス。
// server code
public interface MyServiceImpl {
public void doStuff(Foo foo);
}
public interface MyServiceAsync {
void doStuff(Foo foo, AsyncCallback<Void> async);
}
これを使用する方法:
private MyServiceAsync myService = GWT.create(MyService.class);
Foo foo = new Foo();
...
AsyncCallback callback = new new AsyncCallback {...};
myService.doStuff(foo, callback);
上記の場合、コードは実行中で、コールバック インスタンスの onSuccess() メソッドが実行されます。
しかし、次のように foo インスタンスで bar() メソッドをオーバーライドすると:
Foo foo = new Foo() {
public void bar() {
//do smthng different
}
};
AsyncCallback callback = new new AsyncCallback {...};
myService.doStuff(foo, callback);
GWT SerializationException が発生します。
原因がよくわからないので教えてください。