У меня есть сериализуемый класс GWT, давайте назовем его Foo.
Foo реализует IsSerializable, имеет примитивные и сериализуемые члены, а также другие временные члены и конструктор без аргументов.
class Foo implements IsSerializable {
// transient members
// primitive members
public Foo() {}
public void bar() {}
}
Также служба, которая использует экземпляр Foo для связи RPC.
// 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 () экземпляра обратного вызова.
Но когда я переопределяю метод bar () на экземпляре foo, вот так:
Foo foo = new Foo() {
public void bar() {
//do smthng different
}
};
AsyncCallback callback = new new AsyncCallback {...};
myService.doStuff(foo, callback);
Я получаю GWT SerializationException.
Пожалуйста, просветите меня, потому что я действительно не понимаю, почему.