Ari*_*ild 3 java serialization
这是我的小班:
import java.io.Serializable;
public abstract class SerializableCallback extends Callback
implements Serializable {
private static final long serialVersionUID = 4544768712188843966L;
public abstract void handleMessage(Message msg);
}
Run Code Online (Sandbox Code Playgroud)
这是它更加苗条的父母Callback:
public abstract class Callback {
public abstract void handleMessage(Message msg);
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试:
public void testSerialization() throws IOException, ClassNotFoundException {
SerializableCallback c = new SerializableCallback() {
private static final long serialVersionUID = -4852385037064234702L;
@Override
public void handleMessage(Message msg) {
callbackMethod();
}
};
FileOutputStream fos = new FileOutputStream(FILE);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(c); // fails
out.close();
FileInputStream fis = new FileInputStream(FILE);
ObjectInputStream in = new ObjectInputStream(fis);
Object object = in.readObject();
@SuppressWarnings("unused")
SerializableCallback d = (SerializableCallback) object;
}
private void callbackMethod() {}
Run Code Online (Sandbox Code Playgroud)
测试给我NotSerializableException一个评论所指示的线.这里有几件事情肯定不会引起:
那么什么不引起异常?
你的类没有no-arg构造函数.它有一个构造函数,它接受一个this外部类的参数.如果您进行了testSerialization(),static它可能会解决问题.
但我怀疑你的直接真正的问题是你的nest类有一个对外部类的引用而外部类不是Serializable.