Le langage Java est un langage de programmation orienté objet présentant les caractéristiques d'indépendance de la plate-forme, facile à apprendre et à utiliser et d'une grande fiabilité. Parmi elles, la sérialisation et la désérialisation d'objets sont une fonction très importante du langage Java, qui permet de transmettre ou de stocker facilement des objets dans différentes JVM. Cet article présentera les méthodes d'implémentation de la sérialisation et de la désérialisation du langage Java.
1. Le concept de sérialisation
La sérialisation fait référence au processus de conversion d'objets en séquences d'octets afin qu'ils puissent être transmis ou stockés sur le réseau. Le processus de sérialisation peut convertir les objets Java dans un format commun, tel que XML, JSON, flux binaire, etc., pour la transmission et le traitement sur différentes plateformes. Dans le langage Java, la sérialisation peut être implémentée à l'aide de l'interface Java.io.Serializing.
2. Interface Java.io.Seriallessly
L'interface Java.io.Seriallessly est une interface de marquage fournie par le langage Java, utilisée pour marquer une classe comme étant sérialisable. Seules les classes qui implémentent cette interface peuvent effectuer des opérations de sérialisation et de désérialisation. Cette interface n'implémente aucune méthode, mais sert de marqueur pour indiquer à la JVM que cette classe est sérialisable.
Une classe qui implémente l'interface Java.io.Seriallessly doit remplir les conditions suivantes :
1 La classe doit être sérialisable, c'est-à-dire que son statut peut être écrit dans le flux d'octets.
2. La classe doit avoir un constructeur sans paramètre.
3. Toutes les variables membres non statiques de cette classe doivent être sérialisables.
Par exemple, voici un exemple de classe qui implémente l'interface Java.io.Serializing :
import java.io.Serializable; public class Person implements Serializable { private String name; // 可序列化的成员变量 private int age; // 可序列化的成员变量 public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
3. #Java Le langage propose deux méthodes d'implémentation de sérialisation : la classe Java.io.ObjectOutputStream et la classe Java.io.ByteArrayOutputStream.
Classe Java.io.ObjectOutputStreamimport java.io.FileOutputStream; import java.io.ObjectOutputStream; public class SerializeDemo { public static void main(String[] args) { Person person = new Person("Tom", 20); try { FileOutputStream fos = new FileOutputStream("person.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(person); oos.close(); fos.close(); System.out.println("Person对象已经序列化到person.ser中。"); } catch (Exception e) { e.printStackTrace(); } } }
4 Méthode d'implémentation de désérialisation
La classe Java.io.ObjectInputStream est une classe de désérialisation fournie par le langage Java. Cette classe fournit des méthodes pour lire les octets d'un InputStream et les désérialiser en objets Java. Voici un exemple de méthode qui lit un flux d'octets à partir d'un fichier et le désérialise en un objet Person :
La classe Java.io.ByteArrayInputStream est une classe fournie par le langage Java pour la désérialisation. Cette classe fournit des méthodes pour lire des octets à partir d'un tableau d'octets et les désérialiser en objets Java. Voici un exemple de méthode pour désérialiser un tableau d'octets en un objet Personne :import java.io.ByteArrayOutputStream; import java.io.ObjectOutputStream; public class SerializeDemo { public static void main(String[] args) { Person person = new Person("Tom", 20); try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(person); byte[] byteArray = bos.toByteArray(); oos.close(); bos.close(); System.out.println("Person对象已经序列化到字节数组中。"); } catch (Exception e) { e.printStackTrace(); } } }
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!