奇怪的Java序列化问题

奇怪的Java序列化问题,java,serialization,Java,Serialization,我有一个简单的java抽象类: abstract public class MyClass implements Streamable { private static final long serialVersionUID = 5593048244217796061L; ... protected MyClass() { } ... abstract public ReturnType abstractMethod(ArgType crd);} 提到的所有类型都是可流化的(我没有使用默认的J

我有一个简单的java抽象类:

abstract public class MyClass implements Streamable {
private static final long serialVersionUID = 5593048244217796061L;
...
protected MyClass() { }
...
abstract public ReturnType abstractMethod(ArgType crd);}
提到的所有类型都是可流化的(我没有使用默认的Java序列化,而是使用一些“GWT”序列化程序)

现在,我有很多这样的课程:

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$1

添加“串行UIID”没有帮助。“MyClass”没有受保护的默认构造函数。我应该怎么做才能使它可序列化?我可以避免更改所有其他使用“MyClass”的类吗?

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

//some code
我正在调用外部“AnotherClass”实例的方法,这似乎是序列化的禁忌

我已经解决了:

1) 避免匿名类

2) 将“条件”和“此”传递给该类的构造函数

3) 而不是

>some code calling outer method<
>一些调用外部方法的代码<
我做到了

>some code calling "parent.method()"<
>一些调用“parent.method()”的代码<

您的错误消息似乎是来自GWT的错误。您是否在应用程序中使用google web toolkit?如果没有,为什么要使用GWT进行序列化?是的。我在常规Java序列化方面遇到问题(我不想编写序列化代码,Java序列化无法处理我有的一些复杂值哈希映射),GWT似乎可以工作。异常似乎是抱怨您在initdefiniters()方法中使用的匿名类。如果您找不到解决方法,我建议将此匿名类升级为普通类,看看是否可以解决问题。上面示例中的匿名类不包含默认构造函数。@Palamino-但它是一个超级类。。。如何声明匿名类的默认构造函数?