Я пытаюсь узнать сериализацию и где я не могу понять нижеследующую концепцию.Более глубокое понимание сериализации
У меня есть класс под названием «Учетная запись», и класс должен быть сериализован, Учетный класс имеет два имени пользователя и пароль. Какой пароль не нужно сериализовать. Поэтому мы добавляем ключевое слово переходное.
public class CustomizedSerialization{
public static void main(String[] args) throws IOException{
Account acc= new Account();
System.out.println("Serialization Started");
FileOutputStream fos= new FileOutputStream("userDetail.txt");
ObjectOutputStream oos= new ObjectOutputStream(fos);
oos.writeObject(acc);
System.out.println("Serialization Ended");
}
}
class Account implements Serializable{
String username="myusername";
transient String password="mypassword";
}
Fine it runs as expected the output is
Account UserName myusername
Account Password null
Проблема начинается здесь. Говорят, что если вы хотите сериализовать пароль, тогда также создайте методы обратного вызова со следующими сигнатурами в классе, который должен быть сериализован.
Теперь добавьте следующий код в моем классе Account
private void writeObject(ObjectOutputStream os) throws Exception{
System.out.println("writeObject Callback");
os.defaultWriteObject();
os.writeObject(password);
}
private void readObject(ObjectInputStream ois) throws Exception{
ois.defaultReadObject();
System.out.println("ReadObject Callback");
this.password=(String)ois.readObject();
}
Круто работает работу ....
Account UserName myusernamedurga
Account Password mypassword
Теперь мой вопрос заключается в том, что мы можем реализовать это очень простым способом, как удаление ключевого слова переходного процесса для пароля. Я верю, что есть некоторые причины этого, может ли кто-нибудь объяснить мне.
Спасибо.
В этом примере это верно. ** Однако **, * вы не должны «Сериализовать» пароль (ы) *. –
Может кто-нибудь объяснить * что? * Вы добавили 'transient', чтобы он не сериализовался; вы добавили методы, чтобы они вручную сериализовались; вы удалили их оба, и он автоматически сериализуется. Что за вопрос? – EJP
@EJP, вы говорите, что эти методы предназначены для ручной сериализации. Не могли бы вы рассказать мне, насколько это отличается от обычной сериализации с временным ключевым словом. – user3473132