当前位置: 技术问答>java相关
怎么能让序列化同步??
来源: 互联网 发布时间:2015-07-08
本文导语: A、B两个类的对象都有指向同一个C类对象的引用。 我在保存了A类对象后,又对B类对象中的C类对象进行了修改。如何能让我在再次读出A类对象时A类里的c类对象会自动更新?? | the point is, ...
A、B两个类的对象都有指向同一个C类对象的引用。
我在保存了A类对象后,又对B类对象中的C类对象进行了修改。如何能让我在再次读出A类对象时A类里的c类对象会自动更新??
我在保存了A类对象后,又对B类对象中的C类对象进行了修改。如何能让我在再次读出A类对象时A类里的c类对象会自动更新??
|
the point is, you have to call writeObject for ONCE.
and then, writeObject can take care of the consistency.
if you call writeObject(students), writeObject(registration), writeObject(courses) individually,
it does not guarantee that.
and then, writeObject can take care of the consistency.
if you call writeObject(students), writeObject(registration), writeObject(courses) individually,
it does not guarantee that.
|
我觉得你的问题在于在保存类A的对象时不应该用同时保存C的内容或连接,因为事实上,当用保存的某个静态A对象数据构造一个新的A对象时,主控程序很难判断哪个C类的对象跟它是相关联的。
如果你可以说明或解决A对象身份的问题,序列化的同步就简单了。
如果你可以说明或解决A对象身份的问题,序列化的同步就简单了。
|
你的情况一般应该这样做:
public class C
{
private static C constant = null;
private C //构造
{
}
public synchronized static C getInstance()
{
if( constant == null )
constant = new C();
return constant;
}
}
这样,你在系统中多个类中对C类的引用做修改时,使用C.getInstance()即可。
这样的设计模式就能达到你的目的。
public class C
{
private static C constant = null;
private C //构造
{
}
public synchronized static C getInstance()
{
if( constant == null )
constant = new C();
return constant;
}
}
这样,你在系统中多个类中对C类的引用做修改时,使用C.getInstance()即可。
这样的设计模式就能达到你的目的。
|
关注