从类函数反序列化 java 对象



让我们想象一下我有以下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(){
     ....
  }
}

最新更新