Die Serialisierung ist ein Prozess der Umwandlung der Zustandsinformationen eines Objekts in ein Formular, das gespeichert oder übertragen werden kann. Im Allgemeinen wird ein Objekt in einem Speichermedium wie Archiven oder Zitierpuffern gespeichert. Während der Netzwerkübertragung kann es in Formaten wie Bytes oder XML vorliegen. Byte- oder XML -Codierungsformate können vollständig gleiche Objekte wiederherstellen. Dieser entgegengesetzte Prozess wird auch als Deserialisierung bezeichnet.
Serialisierung und Deserialisierung von Java -Objekten <br /> In Java können wir Objekte auf viele Arten erstellen und das Objekt wiederverwenden, solange das Objekt nicht recycelt wird. Die Java -Objekte, die wir alle erstellen, existieren jedoch im Heap -Speicher des JVM. Diese Objekte können nur existieren, wenn sich der JVM im Laufstaat befindet. Sobald der JVM nicht mehr läuft, geht der Zustand dieser Objekte verloren.
In realen Anwendungsszenarien müssen wir diese Objekte jedoch bestehen und die Objekte bei Bedarf erneut lesen können. Die Serialisierung von Java -Objekten kann uns helfen, diese Funktion zu implementieren.
Objektserialisierungsmechanismus ist eine integrierte Methode für die Persistenz in der Java-Sprache. Durch die Objekt -Serialisierung kann der Status des Objekts als Byte -Array gespeichert werden, und dieses Byte -Array kann bei Bedarf durch Deserialisierung in ein Objekt umgewandelt werden. Die Objekt -Serialisierung kann leicht zwischen aktiven Objekten und Byte -Arrays (Streams) im JVM konvertiert werden.
In Java werden die Serialisierung und Deserialisierung von Objekten in RMI (Remote -Methodenaufrufe) und Netzwerkübertragung häufig verwendet.
Verwandte Schnittstellen und Java -Klassen bieten eine bequeme API, um sie zu unterstützen, um den Entwicklern die Serialisierung und Deserialisierung von Java -Objekten zu ermöglichen. Dies umfasst die folgenden Schnittstellen und Klassen:
Die Klasse ermöglicht ihre Serialisierungsfunktionalität, indem die Schnittstelle java.io.serializable implementiert wird. Klassen, die diese Schnittstelle nicht implementieren, können keinen ihrer Zustände serialisieren oder deserialisieren. Alle Subtypen einer serialisierbaren Klasse sind selbst serialisierbar. Die Serialisierungsschnittstelle hat keine Methoden oder Felder und wird nur zur Identifizierung serialisierbarer Semantik verwendet. (Diese Schnittstelle hat keine Methoden und Felder. Warum können also nur Objekte der Klasse, die die Schnittstelle implementiert, serialisiert werden?)
Beim Versuch, ein Objekt zu serialisieren, wenn ein Objekt angetroffen wird, unterstützt dies die serialisierbare Schnittstelle nicht. In diesem Fall wird eine nichtserialisierbare Ausnahme geworfen.
Wenn die serialisierte Klasse über eine übergeordnete Klasse verfügt und dass Sie die in der übergeordneten Klasse definierten Variablen gleichzeitig bestehen möchten, sollte die übergeordnete Klasse auch die Schnittstelle von Java.io.Serializable integrieren.
Hier ist eine Klasse, die die Schnittstelle von Java.io.Serializable implementiert
Paket com.hollischaung.Serialization.Serializabledemos; importieren java.io.ioSerializable;/*** Erstellt von Hollis unter 16/2/17.*Implementieren der serialisierbaren Schnittstelle*/public class User1 Implements Serializable {private String name; privat int int; name;} public int getageage () {return ay;} public void setage (int ay) {this.age = älter;}@oversidepublic String toString () {return "user {" + "name = '" + name +' ' + ", ay" + älter +'} ';}}}}}}}}}}} Serialisierung und Deserialisierung durch den folgenden Code
Paket com.hollische Es möchte serialisiert sein*/public class serializabledemo1 {public static void main (String [] args) {// initialisiert den objektuser1 user1 user1 (); user.setName ("hollis"); user.setage (23); system.out.println (user). FileOutputStream ("tempFile")); FileInputStream (Datei)); user1 newUser = (user1) ois.readObject (); System.out.println (NewUser);} catch (ioException e) {e.printstacktrace ();} catch (classNotFoundException) {E.printly); {FileUtils.forcedelete (Datei);} catch (ioException e) {e.printstacktrace ();}}}}} // output: // user {name = 'hollis', ay 23} // user {name = 'hollis', AGE = 23} 23}Das obige dreht sich alles um diesen Artikel. Ich hoffe, es wird für alle hilfreich sein, Objekte Serialisierung und Deserialisierung in Java zu lernen.