Maison >Java >javaDidacticiel >Comment utiliser le mot-clé transient pour contrôler la sérialisation en Java
Pour les variables membres modifiées par transitoire, elles seront ignorées lors du processus de sérialisation de l'objet instance de la classe. Par conséquent, les variables transitoires ne seront pas exécutées lors de la sérialisation et de la désérialisation de l'objet. Le cycle de vie n'existe que dans la mémoire de l'appelant et ne sera pas écrit sur le disque à des fins de persistance.
La sérialisation d'objets en Java fait référence à la conversion d'objets en séquences d'octets contenant les données et les informations de l'objet. Un objet sérialisé peut être écrit dans une base de données ou un fichier, il peut également être utilisé pour. transmission réseau. Généralement, lorsque nous utilisons le cache (s'il n'y a pas assez d'espace mémoire, il peut être stocké localement sur le disque dur) ou que nous appelons rpc à distance (transmission réseau), nous devons souvent faire en sorte que la classe d'entité implémente l'interface Serialisable afin de rendre il sérialisable. Bien entendu, le but ultime après la sérialisation est de le désérialiser et de le restaurer dans l'instance d'objet Java d'origine. Par conséquent, la séquence d'octets sérialisée peut être restaurée dans un objet Java. Ce processus est une désérialisation.
Lors de la persistance d'objets, pour certaines données membres spéciales (comme le mot de passe de l'utilisateur, le numéro de carte bancaire, etc.), nous ne souhaitons pas utiliser le mécanisme de sérialisation pour les enregistrer. Pour désactiver la sérialisation sur une variable membre d'un objet spécifique, vous pouvez ajouter le mot clé transient avant la variable membre.
Transient est un mot-clé du langage Java, utilisé pour indiquer qu'une variable membre ne fait pas partie de la sérialisation de l'objet. Lorsqu'un objet est sérialisé, les valeurs des variables transitoires ne sont pas incluses dans le résultat de la sérialisation. Les variables non transitoires sont incluses. Notez que les variables statiques modifiées par static ne sont naturellement pas sérialisables.
(1) Une fois qu'une variable est modifiée par transitoire, la variable ne fera plus partie de la persistance de l'objet et le contenu de la variable n'est plus accessible après sérialisation.
(2) Le mot-clé transient ne peut modifier que les variables, mais pas les méthodes et les classes. Notez que les variables locales ne peuvent pas être modifiées par le mot clé transient. Si la variable est une variable de classe définie par l'utilisateur, la classe doit implémenter l'interface Serialisable.
(3) Une variable statique ne peut pas être sérialisée, qu'elle soit modifiée ou non par un transitoire (si la variable statique de la classe a encore une valeur après désérialisation, la valeur sera la valeur de la variable statique correspondante dans la JVM actuelle). La sérialisation enregistre l'état de l'objet et les variables statiques enregistrent l'état de la classe, donc la sérialisation n'enregistre pas les variables statiques.
(1) Les valeurs de champ de la classe peuvent être dérivées d'autres champs. Par exemple, une classe rectangulaire a trois attributs : longueur, largeur et aire. la zone n’a pas besoin d’être sérialisée.
(2) Certaines informations de sécurité ne peuvent pas quitter la JVM dans des circonstances normales.
(3) Si une instance Logger est utilisée dans la classe, l'instance Logger n'a pas besoin d'être sérialisée
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!