Avatar ·

Pourquoi le mot-clé transient est-il nécessaire pour les champs en Java ?

Bonjour à tous ! J'ai commencé à étudier Java et je suis tombé sur le mot-clé `transient` lors de la déclaration des champs d'une classe. J'ai lu la documentation, mais je n'ai pas bien compris à quoi il sert et dans quels cas l'utiliser. J'ai une classe `User` : ```java import java.io.Serializable; public class User implements Serializable { private String username; private String password; private int age; } ``` Je sais que `Serializable` permet de sauvegarder des objets dans un fichier ou de les transmettre via un réseau grâce au mécanisme de sérialisation. Mais pourquoi marquer un champ comme `transient` ? Si je veux qu'un champ ne soit pas sérialisé, pourquoi ne pas simplement le déclarer `static` ou le supprimer de la classe ? Ce qui me trouble particulièrement, c'est l'exemple avec le mot de passe. Supposons que je ne veuille pas sauvegarder le mot de passe dans un fichier. Si je déclare le champ `password` comme `transient`, lors de la restauration de l'objet depuis le fichier, il sera `null`. Mais comment le remplir ensuite ? Cela brise l'intégrité des données ! J'ai essayé d'écrire un code simple : ```java