У меня есть следующий класс, который реализует сериализацию.
class User implements Serializable{
public User(String username, String password) {
this.username=username;
this.password=password;
}
private static final long serialVersionUID = 1L;
String username;
String password;
}
Я пытаюсь сохранить объект класса User в текстовом файле со следующим кодом. В основном я пытаюсь написать объект, а затем прочитать его.
public class SerializableExample {
public static void main(String[] args) {
User user = new User("userB","passwordB");
String filename = "E:\\Proj-docs\\userFile.txt";
FileOutputStream file;
try {
file = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(file);
out.writeObject(user);
out.close();
file.close();
} catch (IOException e) {
e.printStackTrace();
}
User user2=null;
try {
FileInputStream file2 = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(file2);
user2= (User) in.readObject();
Optional checkNull = Optional.ofNullable(user2);
if(checkNull.isPresent()) {
System.out.println(user2.username + " "+user2.password);
}else {
System.out.println("Null Object");
}
}catch(IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
это дает вывод userB passwordB
Теперь допустим, что я хочу изменить свой пользовательский объект и сохранить его в том же текстовом файле
public class SerializableExample {
public static void main(String[] args) {
User user = new User("userD","passwordD");
String filename = "E:\\Proj-docs\\userFile.txt";
FileOutputStream file;
try {
file = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(file);
out.writeObject(user);
out.close();
file.close();
:
:
:
Теперь, если я прочитал свой пользовательский объектэто дает userD passwordD
Мой вопрос, даже после обновления моего пользователя, есть ли способ получить старую версию пользователя (одну со значениями userB passwordB
), используя serialVersionUID?Я хочу посмотреть, как контроль версий может использоваться в сериализации Java, когда мы обновляем объект или добавляем новые атрибуты в наш класс, а не меняем серийный идентификатор пользователя.
Заранее спасибо за ваш вклад.