English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In Java ist Serialisierung ein Konzept, durch das wir den Zustand eines Objekts in einen Byte-Stream schreiben können, um ihn über das Netzwerk (verwendend JPA und RMI-Technologien) zu übertragen.
Objekt serialisieren-
Stellen Sie sicher, dass die Klasse das Serializable-Interface implementiert.
Erstellen Sie einFileOutputStreamObjekts, das die Datei darstellt, in die das Objekt gespeichert werden soll (abstrakter Pfad).
Durch Übergeben des oben erstelltenFileOutputStreamObjekt, um ein ObjectOutputStream-Objekt zu erstellen.
Verwenden Sie die Methode writeObject() zum Schreiben eines Objekts in eine Datei.
Objekt deserialisieren
Erstellen Sie einFileInputStreamObjekt, das eine Datei darstellt, die Serialisierungsobjekte enthält.
Verwenden Sie die Methode readObject() zum Lesen eines Objekts aus einer Datei.
Verwenden Sie das erhaltene Objekt.
甲Konstruktion Ähnliche Methoden und ihr Aufruf bei der Erstellung von Objekten der Klasse, die sie erstellt, werden normalerweise verwendet, um die Variablen einer Instanz der Klasse zu initialisieren. Der Konstruktor hat den gleichen Namen wie die Klasse und hat keine Rückgabetyp.
Wenn kein Konstruktor bereitgestellt wird, erstellt der Compiler für Sie einen Konstruktor, der die Instanzvariablen mit Standardwerten initialisiert.
Wenn wir ein Objekt deserialisieren, wird niemals der Konstruktor seiner Klasse aufgerufen. Betrachten wir das folgende Beispiel, hier gibt es eine Klasse namens Student, die zwei Instanzvariablen und einen Standardkonstruktor (mit zwei festgelegten Werten initialisiert) und einen parameterisierten Konstruktor hat.
Die display()-Methode dieser Klasse zeigt die Werte der aktuellen Instanz an.
Wir übergeben zwei Werte (vani und27)und serialisieren, um ein Objekt der Klasse Student zu erstellen.
Wenn wir dieses Objekt deserialisieren und die display()-Methode aufrufen, werden die übergebenen Werte gedruckt. Statistische Variablen drucken den neuen (aktuellen) Wert in der Klasse aus.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Student implements Serializable{ private String name; private transient int age; private static int year = 2018; public Student(){ System.out.println("This is a constructor"); this.name = "Krishna"; this.age = 25; } public Student(String name, int age){ this.name = name; this.age = age; } public void display() { System.out.println("Name: "+this.name); System.out.println("Age: "+this.age); System.out.println("Year: "+Student.year); } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public void setYear(int year) { Student.year = year; } } public class SerializeExample{ public static void main(String args[]) throws Exception{ //Student-Objekt erstellen Student std = new Student("Vani", 27); //Objekt serialisieren FileOutputStream fos = new FileOutputStream("e:\\student.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(std); oos.close(); fos.close(); //Daten vor Deserialisierung ausgeben System.out.println("Wert vor Deserialisierung"); std.display(); //Wert des statischen Variablen ändern std.setYear(2019); //Wert des Instanzvariablen ändern std.setName("Varada"); //Wert des transienten Variablen ändern std.setAge(19); System.out.println("Objekt serialisiert......."); //Objekt deserialisieren FileInputStream fis = new FileInputStream("e:\\student.ser"); ObjectInputStream ois = new ObjectInputStream(fis); Student deSerializedStd = (Student) ois.readObject(); System.out.println("Objekt de-serialisiert.......); ois.close(); fis.close(); System.out.println("Wert nach Deserialisierung"); deSerializedStd.display(); } }
Ausgaberesultat
Wert vor Deserialisierung Name: Vani Alter: 27 Jahr: 2018 Objekt serialisiert...... Objekt de-serialisiert...... Wert nach Deserialisierung Name: Vani Alter: 0 Jahr: 2019