Serializace je proces převodu objektu do posloupnosti bajtů, která může být trval na disku nebo databáze, nebo mohou být zaslány prostřednictvím datové proudy. Reverzní proces vytváření objektu ze sekvence bajtů se nazývá deserializace.

třída musí implementovat rozhraní Serializable přítomen v java.io balení za účelem jeho serializaci objektu úspěšně., Serializable je markerové rozhraní, které přidává serializovatelné chování do třídy, která jej implementuje.

Java poskytuje Serializable rozhraní API zapouzdřené pod java.io balíček pro serializace a při rekonstrukci objektů, které zahrnují,

  • java.io.serializable
  • java.io.Externalizable
  • ObjectInputStream
  • ObjectOutputStream

Java Marker rozhraní

Značka Rozhraní je speciální rozhraní v jazyce Java, bez jakýchkoliv pole a metody., Marker interface se používá k informování kompilátoru, že třída, která jej implementuje, má určité zvláštní chování nebo význam. Nějaký příklad Marker interface jsou,

  • java.io.serializable
  • java.lang.Cloneable
  • java.rmi.Remote
  • java.util.RandomAccess

Všechna tato rozhraní nemá žádné metody a pole. Do tříd, které je implementují, přidávají pouze zvláštní chování. Rozhraní markerů však byla od Java 5 zastaralá, byla nahrazena anotacemi., Anotace se používají místo Marker rozhraní, které hrají přesně stejnou roli jako marker rozhraní dělal předtím.

pro implementaci serializace a deserializace poskytuje Java dvě třídy ObjectOutputStream a ObjectInputStream.

ObjectOutputStream class

používá se k zápisu stavů objektů do souboru. Objekt, který implementuje java. Io. Serializable rozhraní lze zapsat do strams. Poskytuje různé metody pro provádění serializace.

ObjectInputStream třídy

ObjectInputStream deserializes objekty a primitivní datové napsané pomocí ObjectOutputStream.,

writeObject() a readObject() Metody

writeObject() metoda ObjectOutputStream třídy serializuje objekt a odeslat ji na výstup stream.

public final void writeObject(object x) throws IOException

readObject() metoda ObjectInputStream class reference objektu z proudu a rekonstruovat.

public final Object readObject() throws IOException,ClassNotFoundException

při serializaci, pokud nechcete, aby jakékoli pole bylo součástí stavu objektu, prohlaste jej buď statickým nebo přechodným na základě vaší potřeby a nebude zahrnuto během procesu serializace java.,

Příklad: Serializace Objektu v Javě

V tomto příkladu máme třídu, která implementuje rozhraní Serializable, aby se její objekt serializován.

objekt třídy Studentinfo je serializován pomocí metodywriteObject() a zapsán do souboru student.txt.

příklad: Deserializace objektu v Javě

pro deserializaci objektu používáme třídu ObjectInputStream, která objekt přečte ze zadaného souboru. Viz níže uvedený příklad.,

Abhi104null

kontaktní pole je null, protože bylo označeno jako statické a jak jsme diskutovali dříve, statická pole nejsou serializována.

poznámka: statické členy nejsou nikdy serializovány, protože jsou připojeny ke třídě, která není předmětem třídy.

přechodné Klíčové slovo

při serializaci objektu, pokud nechceme, aby byl určitý datový člen objektu serializován, můžeme jej zmínit přechodně. přechodné Klíčové slovo zabrání tomu, aby byl člen dat serializován.,

class studentinfo implements Serializable { String name; transient int rid; static String contact;}
  • vytvoření datového člena transient zabrání jeho serializaci.
  • V tomto příkladu rid nebude pokračování, protože to je pomíjivé, a contact bude i nadále unserialized, protože je statická.