假设我有以下Java类:
public class ImaginaryClass implements Serializable {
private List<SomeData> someData;
private transient boolean isSynced;
public ImaginaryClass() {
this.load();
}
public void addSomeData(SomeData data) {
this.someData.add(data);
this.isSynced = false;
this.save();
}
private void load() {
// Deserialize "this" instance of the object
this.isSynced = true;
}
private void save() {
// Serialize "this" instance of the object
this.isSynced = true;
}
}
我的目标是在对象自己的类中封装对象实例的序列化和反序列化。我有许多课程要实施,需要特殊的&#34;治疗&#34;因此,这是我迄今为止提出的最简单的设计。
但是,我遇到了问题,我无法重新分配参考this
,所以我认为这不会起作用。在Java中我的上述例子可能吗?我如何使这项工作?
答案 0 :(得分:1)
您无法重新分配this
,您在Serializable对象中执行的操作是序列化/反序列化所有非瞬态非静态字段。
您创建对象的新实例的想法并不错。
如果您创建一个全新的对象,则应将其作为新引用返回,在这种情况下,您可以使用 factory 通过从某些持久存储中加载来构建对象,例如:< / p>
ImaginaryClass objImg = ImaginaryClassFactory.newInstace().loadImaginaryClass();
或者您可以在类本身的public static
方法中执行此操作:
public class ImaginaryClass implements Serializable {
public static ImaginaryClass load(){
....
}
}