En Java, le mot-clé transient
est souvent utilisé avec des champs de classe mais son rôle est souvent mal compris. En fait, faire transient
un champ de classe a deux effets principaux :
En Java, la sérialisation est la conversion de l'état d'un objet en un flux de bytes, qui peut ensuite être sauvegardé dans une base de données, un fichier ou envoyé à travers le réseau. C'est une fonctionnalité très utile pour la persistance des objets. Cependant, il peut y avoir des cas où nous ne voulons pas sauvegarder certaines informations d'un objet. Dans ces cas, nous pouvons rendre ces champs transient
et ils ne seront pas inclus dans le processus de sérialisation.
Voici comment vous pouvez l'utiliser :
public class ExampleClass implements Serializable {
int field1;
transient int field2;
}
Dans cet exemple, si vous essayez de sérialiser un objet de ExampleClass
, field2
ne sera pas inclus dans le flux de bytes généré.
Cela porte à une autre application du mot-clé transient
. Il est souvent utilisé pour indiquer que le champ n'est pas une partie intrinsèque de l'état persistant de l'objet. Autrement dit, sa valeur n'est peut-être pas nécessaire pour une utilisation future de l'objet. C'est pratique dans le cas où certaines valeurs sont calculées ou obtenues à partir d'autres champs chaque fois que l'objet est utilisé, et n'ont pas besoin d'être stockées avec l'objet lui-même.
En utilisant le mot-clé transient
, il est important de se rappeler quelques points. Premièrement, il ne doit être utilisé que sur les champs qui ne sont pas nécessaires pour une représentation correcte et complète de l'objet une fois désérialisé. Deuxièmement, il est préférable de fournir des méthodes personnalisées pour la sérialisation et la désérialisation (writeObject
et readObject
) si votre classe possède des champs transient
.
En résumé, le mot-clé transient
en Java offre une manière flexible de contrôler quelle partie de votre objet est persistante, en vous donnant la main sur le processus de sérialisation.