好的,所以这个问题主要与:有没有更好的方法来做到这一点?
我有一个电话簿应用程序,您可以向其中添加用户、删除用户等,并且为每个人分配一个不同的 ID#。 Person 类将 lastIDused 存储为静态类变量。电话簿类有一个 Persons vector 。
我的解决方法的想法是这样的:为 Person 类创建一个新的非静态变量,并在序列化/保存时,仅对于 vector 中的第一个元素,将静态变量的数据存储到这个新变量中。然后,在反序列化时,使用第一个人的此类变量重新设置静态变量。
回到我原来的问题:有没有更好/更正式/正确的方法来做到这一点?
最佳答案
更好的解决方案(IMO)是使 lastIdUsed
成为 PhoneBook
类的实例字段。听起来您已经在序列化该类的实例...
FWIW - 将 lastIdUsed
设为 Person
的实例字段只是糟糕的对象建模。该字段几乎永远不会有用,也几乎永远不会有有效值。仅当 PhoneBook
中的第一个序列化 Person
时,它才具有有效值。
关于Java序列化: static variables not serializable: workaround,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20942291/