让我们想象一下我有以下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;
}
}
我的目标是将对象实例的序列化和反序列化封装在对象自己的类中。我有许多需要特殊"处理"的类要实现,因此这是我迄今为止想出的最简单的设计。
但是,我遇到了问题,我无法重新分配参考this
所以我的印象是这行不通。在 Java 中,我上面的例子可能吗?我该如何完成这项工作?
你不能重新分配this
,你在可序列化对象中所做的是序列化/反序列化所有非瞬态非静态字段。
您创建对象的新实例的想法还不错。
如果你创建了一个全新的对象,你应该把它作为一个新的引用返回,在这种情况下,你可以有一个工厂,通过从一些持久存储加载对象来构建对象,比如:
ImaginaryClass objImg = ImaginaryClassFactory.newInstace().loadImaginaryClass();
或者,您可以在类本身的public static
方法中执行此操作:
public class ImaginaryClass implements Serializable {
public static ImaginaryClass load(){
....
}
}