Еще один вариант, который следует учитывать, поскольку вы уже используете сериализацию, вы можете реализовать Externalizable
вместо Serializable
. Код, который вы используете для сериализации объектов, останется прежним. Однако в вашем классе вы бы точно указали, как вы хотите, чтобы он сериализовался путем переопределения readExternal()
и writeExternal()
. E.g.:
public class MyClass implements Externalizable {
private int foo;
private String bar;
public readExternal(ObjectInput in) {
foo = in.readInt();
bar = in.readUTF();
}
public writeExternal(ObjectOutput out) {
out.writeInt(foo);
out.writeUTF(bar);
}
}
Просто будьте уверены, что сохраняете порядок при чтении и письме. Попробуйте добавить только поля, однако, если вам нужно удалить поле, оставьте пробел для учета старых версий.
В конечном счете, хотя вы вносите много изменений, лучше всего переключиться на свойства или файл XML, как предлагает LES2. Таким образом, он будет более переносимым и читабельным.