我有一个包含Context的引用的类,我打算序列化这个类的对象。如您所知,Context
对象无法序列化,因此我将其标记为transient
。
现在,我面临的问题是如何恢复Context
引用的状态?我需要在反序列化期间以某种方式传递对应用程序当前上下文的引用。有没有办法在反序列化过程中执行此操作,或者我是否必须首先还原对象,然后通过单独的方法或其他方法重新初始化transient
变量。
答案 0 :(得分:1)
您应该看一下覆盖readObject()方法。在readObject()中,您可以将Context变量初始化为您认为合适的值。
e.g
class Test implements Serializable{
private int a;
private string b;
transient Context c;
private void readObject(ObjectInputStream in) throws IOException{
in.defaultReadObject();
//now initialize transient fields
c=ContextFactory.getContext();
}
}