我有一个JPanel来处理一堆我希望保存并按文件名加载的设置。
似乎很自然,因为面板已经存在并且知道所有关于自身的负载和保存应由面板本身通过附加到按钮的Save(字符串文件名)和Load(字符串文件名)操作来处理。
但是我找到的所有序列化和/或持久性示例都需要一个外部监督程序将对象传递给序列化程序函数。
我可以使用类似于writeObject(this)和this = readObject()的方法来序列化面板对象,还是有一种标准方法可以做到这一点我还没有正确搜索过?
答案 0 :(得分:2)
我不确定我是否完全理解这个问题,但所有序列化逻辑肯定都存在于Object方法(readObject和writeObject)中。
在谈论谁将调用这些方法时,一切都取决于您的用例。序列化对象有几个原因,比如ex:如果想要通过线路将对象传递给另一个JVM,或者你想在JVM重启之间保持对象的状态,或者整个状态的任何其他用例对象需要保存在其运行的JVM之外。
在您的使用案例中,可以这样做吗?是。这是一个好习惯,也许不是。抽象更好,因为如果你需要保留JPanel无法访问的其他对象呢?如果在序列化对象之前需要执行其他逻辑怎么办?如果您的JPanel无法处理订购或其他要求,该怎么办?
您可以详细了解Java序列化here