L'écriture d'objets en mémoire sur le disque dur est une sérialisation, qui n'est pas différente de la sortie générale, sauf que les données de sortie sont un objet, pas un texte ordinaire.
Parce que le stockage des données en mémoire est temporaire, si vous devez sauvegarder l'objet pendant une longue période temps, vous devez L'écriture sur le disque dur entraîne la sérialisation.
Pour qu'un objet soit sérialisé, la classe à laquelle appartient l'objet doit implémenter l'interface Serialisable. est une interface emblématique sans aucun champ ni méthodes abstraites Lorsque la JVM rencontre cette interface, elle attribuera un numéro de version sérialisé à la classe.
4. Un objet est sérialisé et les variables globales de l'objet, y compris les variables de type privé, seront écrites sur le disque dur.
Les champs statiques ne peuvent pas être sérialisés, la valeur d'une variable statique Il s'agit de la valeur dans la JVM actuelle, et non de la valeur définie lors de la sérialisation.
Les champs modifiés par transitoire ne peuvent pas être sérialisés.
OutputStream ops=new FileOuptStream(path); ObjectOuptStream oos=new ObjectOutputStream(ops); Object obj=new Ojbect(); oos.writeObject(obj);
La désérialisation consiste à écrire les données du disque dur dans la mémoire et à obtenir des objets enregistrés dans des fichiers. .
L'ordre de désérialisation doit être cohérent avec l'ordre de sérialisation.
⑴ Lors de la sérialisation, un numéro long est généré, appelé numéro de version de sérialisation, et est enregistré au en même temps Dans les fichiers sérialisés et les fichiers de classe, comparez les deux numéros lors de la désérialisation. S'ils sont identiques, la sérialisation est réussie ; s'ils ne sont pas identiques, la désérialisation ne peut pas être effectuée.
⑵ Le numéro de version sérialisé est utilisé pour marquer la version de la classe d'entité une fois la classe d'entité modifiée, si le numéro de version sérialisé n'est pas explicitement spécifié. , le système générera automatiquement un nouveau numéro de version. Si les deux numéros de version sont différents, ils ne peuvent pas être sérialisés. Généralement, le numéro de version de sérialisation est explicitement défini dans la classe d'entité qui doit être sérialisée.
⑶ Ne pas recompiler ne générera pas nécessairement un nouveau numéro de version sérialisé. Ce n'est que lorsque la classe d'entité change qu'un nouveau numéro de version sérialisé sera généré.
Lors de la désérialisation, comparez d'abord si le numéro de version sérialisé dans le fichier sérialisé et le fichier de classe sont identiques. sont les mêmes, indiquant que le fichier sérialisé est généré par le fichier de classe actuel et peut être désérialisé ; ce n'est pas la même chose, indiquant qu'il n'est pas généré par le fichier de classe actuel, la version est incohérente et ne peut pas être désérialisée ; être désérialisé.
InputStream is=new FileInputStream(path); ObjectInputStream ois=new ObjectIputStream(is); Object obj=ois.readObject();
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!