我对序列化还比较陌生,所以我创建了一个测试应用程序来处理它。我序列化了一个JFrame
,其中添加了3个JComponents
:一个JTextArea
和两个JButtons
。一个按钮保存了JFrame
的状态(即序列化),另一个按钮加载了已序列化的JFrame(即反序列化)。
[当我在JTextArea
中键入消息时,单击按钮以保存状态,然后从SER文件中加载JFrame
,除了按钮没有,我得到了完全相同的对象(键入消息和全部)。工作时间更长。
有人介意解释为什么这样做的行为吗?
P.S。我知道序列化GUI组件通常不是一个好习惯,但这只是出于学习目的。
[我使正在实现ActionListener
的类也实现了Serializable
,并立即解决了该问题。
是的,肯定会有所帮助,即使实现ActionListener的类实现Serializable。这里的问题是为什么看到组件具有不可序列化的事件侦听器,为什么进程不会引发NotSerializableException,为什么将侦听器简单地从序列化中排除,而不是抛出异常。另外,如果我使用lambda表达式实现ActionListener怎么办?请帮助😭