奇怪的Java序列化问题
我有一个简单的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
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-但它是一个超级类。。。如何声明匿名类的默认构造函数?