Pourquoi Java a-t-il besoin de champs transient et comment fonctionnent-ils lors de la sérialisation ?
Bonjour à tous ! J'apprends Java et je suis tombé sur le modificateur `transient` pour les champs de classe. J'ai lu la documentation, mais je n'ai pas bien compris à quoi il sert.
J'ai une classe utilisateur simple :
```java
public class User implements Serializable {
private String username;
private String password;
private int age;
// getters et setters
}
```
Quand je sérialise un objet de cette classe dans un fichier, je veux sauvegarder username et age, mais pas password — ce sont des données confidentielles ! J'ai essayé de ne pas écrire password manuellement, mais lors de la désérialisation, le champ password devient `null`, ce qui casse la logique d'authentification.
Questions :
1. Comment exclure correctement password de la sérialisation pour pouvoir le restaurer après désérialisation (par exemple, depuis une autre source) ?
2. Pourquoi ne peut-on pas simplement utiliser `static` ou rendre le champ temporaire ?
3. Y a-t-il des pièges lors de l'utilisation de `transient` avec des collections ou des objets imbriqués ?
Je serais reconnaissant pour des exemples de