我有一个简单的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"?
的所有其他类答案 0 :(得分:0)
原来我有一些我为了简单而没有提到的交叉引用:
代替//some code
我正在调用外部“AnotherClass”实例的方法,似乎这是序列化的禁忌。
我已经解决了:
1)避免匿名课
2)将“conditions”和“this”传递给该类的构造函数。
3)而不是
>some code calling outer method<
我做过
>some code calling "parent.method()"<