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