Serialisierung ist ein Prozess der Umwandlung eines Objekts in eine Folge von Bytes, die auf einer Festplatte oder Datenbank beibehalten oder über Streams gesendet werden können. Der umgekehrte Vorgang zum Erstellen eines Objekts aus einer Folge von Bytes wird als Deserialisierung bezeichnet.
Eine Klasse muss eine serialisierbare Schnittstelle implementieren, die im java.io
– Paket vorhanden ist, um ihr Objekt erfolgreich zu serialisieren., Serializable ist eine Marker-Schnittstelle, die der implementierenden Klasse serialisierbares Verhalten hinzufügt.
Java bietet Serializable API gekapselt unter java.io
Paket zum serialisieren und Deserialisieren von Objekten, die,
java.io.serializable
java.io.Externalizable
ObjectInputStream
ObjectOutputStream
Java-Marker-interface
Marker-Interface ist eine spezielle Schnittstelle in Java ohne Feld und Methode., Die Marker-Schnittstelle wird verwendet, um den Compiler darüber zu informieren, dass die Klasse, die sie implementiert, ein besonderes Verhalten oder eine besondere Bedeutung hat. Einige Beispiele für Marker-Schnittstelle sind,
java.io.serializable
java.lang.Cloneable
java.rmi.Remote
java.util.RandomAccess
Alle diese Schnittstellen haben keine Methode und feld. Sie fügen den Klassen, die sie implementieren, nur spezielles Verhalten hinzu. Schnittstellen sind jedoch seit Java 5 veraltet, sie wurden durch Anmerkungen ersetzt., Anmerkungen werden anstelle von Marker-Schnittstellen verwendet, die genau die gleiche Rolle spielen wie Marker-Schnittstellen zuvor.
Um die Serialisierung und Deserialisierung zu implementieren, bietet Java zwei Klassen ObjectOutputStream und ObjectInputStream.
ObjectOutputStream Klasse
Es wird verwendet, um Objektzustände in die Datei zu schreiben. Ein Objekt, das java.io.Serializable Schnittstelle implementiert, kann in strams geschrieben werden. Es bietet verschiedene Methoden zur Serialisierung.
ObjectInputStream Klasse
Ein ObjectInputStream deserialisiert Objekte und primitive Daten geschrieben, mit einem ObjectOutputStream.,
writeObject() und readObject () Methoden
Die writeObject()
Methode der ObjectOutputStream
Klasse serialisiert ein Objekt und sendet es an den Ausgabestream.
public final void writeObject(object x) throws IOException
Die readObject()
– Methode von ObjectInputStream
verweist auf ein Objekt aus dem Stream und deserialisiert es.
public final Object readObject() throws IOException,ClassNotFoundException
während der Serialisierung Wenn Sie nicht möchten, dass ein Feld Teil des Objektstatus ist, deklarieren Sie es basierend auf Ihren Anforderungen entweder statisch oder vorübergehend und es wird während des Java-Serialisierungsprozesses nicht enthalten sein.,
Beispiel: Serialisieren eines Objekts in Java
In diesem Beispiel haben wir eine Klasse, die serialisierbare Schnittstelle implementiert, um sein Objekt serialisiert zu machen.
Das Objekt der Studentinfo-Klasse wird mit der writeObject()
– Methode serialisiert und in die student.txt
– Datei geschrieben.
Beispiel: Deserialisierung des Objekts in Java
Um das Objekt zu deserialisieren, verwenden wir die ObjectInputStream-Klasse, die das Objekt aus der angegebenen Datei liest. Siehe das folgende Beispiel.,
Abhi104null
Kontakt-Feld ist null, da es geprägt war als statische und wie wir bereits früher diskutiert statische Felder nicht serialisiert werden.
HINWEIS: Statische Member werden niemals serialisiert, da sie mit class not object of class verbunden sind.
transientes Schlüsselwort
Wenn beim Serialisieren eines Objekts bestimmte Datenelemente des Objekts nicht serialisiert werden sollen, können wir es vorübergehend erwähnen. transient keyword verhindert, dass dieses Datenelement serialisiert wird.,
class studentinfo implements Serializable { String name; transient int rid; static String contact;}
- Das Erstellen eines Datenelements
transient
verhindert dessen Serialisierung. - In diesem Beispiel wird
rid
nicht serialisiert, da es vorübergehend ist, undcontact
bleibt auch nicht serialisiert, da es statisch ist.