Serialization is een proces van het omzetten van een object in een reeks bytes die kan worden doorgezet naar een schijf of database of kan worden verzonden via streams. Het omgekeerde proces van het creëren van object uit de opeenvolging van bytes wordt deserialisatie genoemd.

Een klasse moet Serialiseerbare interface in java.io pakket implementeren om het object succesvol te serialiseren., Serialisable is een marker interface die serialiseerbaar gedrag toevoegt aan de klasse die het implementeert.

Java biedt Serializable API ingekapseld onder java.io pakket voor serialisatie en deserialisatie objecten omvatten,

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

Java-Markering interface

Marker-Interface is een speciale interface in Java zonder enige veld en methode., Marker interface wordt gebruikt om de compiler te informeren dat de klasse die het implementeert een speciaal gedrag of Betekenis heeft. Enkele voorbeelden van Marker-interface zijn,

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

Al deze interfaces heeft geen methode en veld. Ze voegen alleen speciaal gedrag toe aan de klassen die ze implementeren. Echter marker interfaces zijn verouderd sinds Java 5, Ze werden vervangen door annotaties., Annotaties worden gebruikt in plaats van Marker Interface die exact dezelfde rol spelen als marker interfaces eerder deden.

om serialisatie en deserialisatie te implementeren, biedt Java twee klassen ObjectOutputStream en ObjectInputStream.

ObjectOutputStream class

Het wordt gebruikt om objecttoestanden naar het bestand te schrijven. Een object dat java.io.Serialisable interface implementeert kan naar strams worden geschreven. Het biedt verschillende methoden om serialisatie uit te voeren.

ObjectInputStream class

een ObjectInputStream deserialiseert objecten en primitieve data geschreven met behulp van een ObjectOutputStream.,

Writeobject() en readObject() methoden

dewriteObject() methode vanObjectOutputStream klasse serialiseert een object en stuurt het naar de uitvoerstroom.

public final void writeObject(object x) throws IOException

de readObject() methode van ObjectInputStream klasse referenties object uit de stroom en deserialiseren.

public final Object readObject() throws IOException,ClassNotFoundException

tijdens het serialiseren als u niet wilt dat een veld deel uitmaakt van de objectstatus, verklaar het dan statisch of Tijdelijk op basis van uw behoefte en het zal niet worden opgenomen tijdens het Java serialisatieproces.,

voorbeeld: serialiseren van een Object in Java

in dit voorbeeld hebben we een klasse die Serialiseerbare interface implementeert om het object serialiseerbaar te maken.

Object van Studentinfo klasse wordt geserialiseerd met behulp van writeObject() methode en geschreven naar student.txt bestand.

voorbeeld: deserialisatie van Object in Java

om het object te deserialiseren, gebruiken we ObjectInputStream class die het object uit het opgegeven bestand zal lezen. Zie het onderstaande voorbeeld.,

Abhi104null

Contactveld is null omdat het gemarkeerd was als statisch en zoals we eerder hebben besproken worden statische velden niet geserialiseerd.

opmerking: statische leden worden nooit geserialiseerd omdat ze verbonden zijn met class not object of class.

transient Keyword

tijdens het serialiseren van een object, als we niet willen dat bepaalde gegevens lid van het object te serialiseren kunnen we noemen het transient. transient keyword zal voorkomen dat dat data lid wordt geserialiseerd.,

class studentinfo implements Serializable { String name; transient int rid; static String contact;}
  • Een gegevenslid aanmaken transient voorkomt serialisatie.
  • in dit voorbeeld zal rid niet geserialiseerd worden omdat het van voorbijgaande aard is, en contact zal ook niet gerialiseerd blijven omdat het statisch is.

0