奇怪的 Java 序列化问题

Strange Java serialization issue

我有一个简单的 java 摘要 class:

abstract public class MyClass implements Streamable {
private static final long serialVersionUID = 5593048244217796061L;
...
protected MyClass() { }
...
abstract public ReturnType abstractMethod(ArgType crd);}

提到的所有类型也是可流式传输的(我没有使用默认的 Java 序列化,而是一些 "GWT" 序列化程序)。

现在,我有很多 classes 是这样工作的:

public abstract class AnotherClass implements Streamable {

protected AnotherClass() { }

protected void initDeterminators() {
    MyClass determinator = new MyClass(conditions) {            
        @Override
        public ReturnType abstractMethod(ArgType crd) {
            //some code
        }
    };
    addDeterminator(determinator);
}}

在序列化 "AnotherClass" 时出现错误:

com.nkdata.gwt.streamer.client.StreamerException: Error creating streamer for class package.AnotherClass

添加 "Serial UIID" 没有帮助。 "MyClass" 确实有受保护的默认构造函数。我应该怎么做才能使其可序列化?我可以避免更改所有其他使用 "MyClass" 的 classes 吗?

原来我有一些为了简单起见没有提到的交叉引用: 代替

//some code

我正在调用外部 "AnotherClass" 实例的方法,这似乎是序列化的禁忌。

我已经解决了:

1) 避免匿名 class

2) 将 "conditions" 和 "this" 传递给 class 的构造函数。

3) 而不是

>some code calling outer method<

我做过

>some code calling "parent.method()"<