奇怪的Java序列化问题

时间:2015-02-10 13:07:07

标签: java serialization

我有一个简单的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的"确实有受保护的默认ctor。我该怎么办才能使其可序列化?我是否可以避免更改使用" MyClass"?

的所有其他类

1 个答案:

答案 0 :(得分:0)

原来我有一些我为了简单而没有提到的交叉引用:

代替
//some code

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

我已经解决了:

1)避免匿名课

2)将“conditions”和“this”传递给该类的构造函数。

3)而不是

>some code calling outer method<

我做过

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