Serialisierung und Deserialisierung in Java
Serialisierung ist der Prozess der Umwandlung des Zustands eines Objekts in einen Bytestrom, sodass dieser über das Netzwerk übertragen oder dauerhaft auf der Festplatte gespeichert werden kann. Unter Deserialisierung versteht man den Prozess der Wiederherstellung eines serialisierten Bytestroms in einem Objekt. In Java werden Serialisierung und Deserialisierung über ObjectInputStream und ObjectOutputStream implementiert.
Warum brauchen wir Serialisierung?
In modernen Anwendungen muss der Zustand von Objekten häufig zwischen verschiedenen Systemen, Prozessen und Threads übertragen werden. In einem verteilten System müssen beispielsweise Objekte möglicherweise zwischen verschiedenen Servern übertragen werden. Ein weiteres Beispiel ist, dass beim Speichern von Objekten im Cache die Objekte serialisiert werden müssen, damit sie auf der Festplatte gespeichert werden können.
Serialisierung in Java
Java bietet eine serialisierbare Schnittstelle zur Implementierung der Serialisierung. Die Serializable-Schnittstelle ist lediglich eine Markierungsschnittstelle ohne Methoden. Sie teilt dem Compiler lediglich mit, dass diese Klasse serialisierbar ist. Wenn eine Klasse die Serializable-Schnittstelle implementiert, können Objekte dieser Klasse serialisiert werden. Zum Beispiel:
public class Person implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } }
Im obigen Beispiel implementiert die Person-Klasse die Serializable-Schnittstelle, was angibt, dass die Klasse serialisiert werden kann.
Deserialisierung in Java
Deserialisierung in Java ist der Prozess der Wiederherstellung eines serialisierten Bytestroms in einem Objekt. Die Deserialisierung kann mithilfe der ObjectInputStream-Klasse implementiert werden. Zum Beispiel:
try { FileInputStream fileIn = new FileInputStream("person.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); Person person = (Person) in.readObject(); in.close(); fileIn.close(); } catch (IOException i) { i.printStackTrace(); } catch (ClassNotFoundException c) { c.printStackTrace(); }
Im obigen Beispiel erstellen wir zuerst ein FileInputStream-Objekt und übergeben es dann an den ObjectInputStream-Konstruktor, um das ObjectInputStream-Objekt zu erstellen. Danach lesen wir das Objekt aus dem ObjectInputStream mit der Methode readObject(). Zum Schluss schließen wir ObjectInputStream und FileInputStream.
Beachten Sie, dass beim Deserialisieren die serialisierte Klasse vorhanden sein muss. Wenn die serialisierte Klasse nicht vorhanden ist, wird eine ClassNotFoundException-Ausnahme ausgelöst.
Serialisierung und Deserialisierung in Java sind sehr wichtig, da sie die Weitergabe von Objekten zwischen verschiedenen Systemen, Prozessen und Threads ermöglichen. Gleichzeitig bietet Java auch einige Methoden zur Steuerung des Serialisierungs- und Deserialisierungsverhaltens von Objekten, z. B. die Methoden transient, writeObject () und readObject (). Da Serialisierung und Deserialisierung einen großen Einfluss auf die Leistung haben, sollte ihre Verwendung gegebenenfalls vermieden werden.
Das obige ist der detaillierte Inhalt vonSerialisierung und Deserialisierung in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!