Cet article analyse l'utilisation de mots clés transitoires en Java. Partagez-le pour votre référence. L'analyse spécifique est la suivante:
Java a une fonctionnalité de sérialisation. Cela peut grandement faciliter certaines opérations sur le réseau, mais en même temps, car cela implique des problèmes de sécurité, il n'est pas destiné à tout stocker dans la classe (car de cette façon, d'autres peuvent connaître le contenu de la classe par sérialisation). Nous pouvons utiliser le mot-clé transitoire, ce qui signifie temporaire, c'est-à-dire qu'il ne sera pas sérialisé localement avec la classe, donc après la restauration, les variables définies par ce mot-clé n'existent plus.
Habituellement, les programmes que nous écrivons nécessitent que des informations spécifiques soient persistantes ou enregistrées sur le disque pour une utilisation par un programme ou sur une autre exécution du même programme. Prise en charge de la sérialisation des objets. Cependant, il est possible que tous les domaines ne soient pas enregistrés. .
Tout d'abord, regardons un code de sérialisation Java:
Classe publique LoggingInfo implémente Java.io.Serializable {Private Date loggingDate = new Date (); ) {String Password = Null; Date: "+ LoggingDate.ToString () +" / n Mot de passe: "+ mot de passe;}}Maintenant, nous créons une instance de cette classe, le sérialisons, puis écrivons cet objet sérialisé comme le disque.
LoggingInfo Logginfo = new LoggingInfo ("Mike", "Mechanics"); (Loginfo); o.close ;Si nous exécutons ce code, nous remarquerons que la lecture de l'objet (désérialisation)) à partir du disque imprime le mot de passe comme "non défini". C'est le résultat correct que nous attendons lorsque nous définissons le domaine PWD comme transitoire.
Voyons maintenant les problèmes potentiels qui peuvent résulter du traitement négligent des domaines transitoires. Supposons que nous modifions la définition de classe et fournissons une valeur par défaut au domaine transitoire, le code est le suivant:
Classe publique GuestLoggingInfo implémente Java.io.Serializable {Private Date LoggingDate = New Date (); {// Identique à ci-dessus}} Maintenant, si nous passons une instance de GuestLoggingInfo, écrivons-la sur disque et la lisons sur le disque, nous voyons toujours le mot de passe d'impression de l'objet Readback comme "pas défini".
Lorsqu'une instance d'une classe est lue à partir du disque, le constructeur de cette classe n'est pas réellement exécuté.
Au lieu de cela, un état persistant d'un objet de cette classe est chargé et cet état est affecté à un autre objet de cette classe.
J'espère que cet article sera utile à la programmation Java de tous.