Når du serialiserer et objekt i Java, konverterer du dataene til byte -strømmer som deretter senere konverteres tilbake til kopien av de originale dataene. Hvis dette høres forvirrende ut, tenk på serialisering i følgende vilkår. Du jobber med et dokument og lagrer det på harddisken. Du seriemessig serierer dataene slik at du kan hente kopien senere. Serialisering gjør overføring av data på nettverk mye enklere og mer effektiv.
Det er viktig at du forstår det grunnleggende i Java før du serierer et objekt. Hvis du har brukt programmeringsspråk som Pascal og eldre versjoner av C, vet du at uten objektserialisering må en programmerer lage en egen I/O -tekstfil for å lagre og laste inn data. Objektserialisering i Java omgår opprettelsen av denne tekstfilen for lagring av data, noe som sparer tid og programmeringskostnader. Følgende artikkel inneholder trinnene for å serialisere et objekt i Java. Eksempelkoden i denne artikkelen brukes med tillatelse fra The Java Developers Almanac 1.4.
Trinn
Trinn 1. Åpne Java -kodingsobjektet som krever serialisering, eller lag et fra bunnen av
Trinn 2. Velg objektet i Java som du vil serialisere
I dette eksemplet vil vi kalle dette objektet "MyObject."
Trinn 3. Aktiver objektserialisering i Java ved å gjøre MyObject -klassen til å implementere grensesnittet java.io. Serialize
Bare legg til følgende kodelinje i begynnelsen av koden, og erstatt "public class MyObject" line.public class MyObject implementerer java.io. Serializable
Trinn 4. Nå er objektet ditt serialiserbart, det betyr at det kan skrives av en utgangsstrøm, slik:
-
Følgende kodelinjer illustrerer hvordan du skriver MyObject (eller et serialiserbart objekt) til en fil eller disk.
prøve{
// Serialiser dataobjekt til en fil
ObjectOutputStream out = ny ObjectOutputStream (ny FileOutputStream ("MyObject.ser"));
out.writeObject (objekt);
out.close ();
// Serialiser dataobjekt til en byte -matrise
ByteArrayOutputStream bos = new ByteArrayOutputStream ();
ut = ny ObjectOutputStream (bos);
out.writeObject (objekt);
out.close ();
// Få byte til det serialiserte objektet
byte buf = bos.toByteArray ();
} fangst (IOException e) {
}
Trinn 5. Det kan leses slik:
-
prøv {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream -leser = ny ObjectInputStream (dør); MyObject x = nytt MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Trinn 6. Utfør den serialiserte objektkoden i Java -programmet for å sikre at den fungerer effektivt (valgfritt)
Trinn 7. Lagre og lukk det serialiserte objektet i Java
Tips
- Serialiseringsforbedringer i Java SE Development Kit 6 lar deg bruke ObjectStreamClass til å slå opp en hvilken som helst metode for å håndtere alle ikke-serialiserbare klasseobjekter.
- For å forbedre lese- og skrivetider i store objekttrær, bruk søkeordet "forbigående" for eksempel variabler som ikke krever serialisering. Dette vil øke ytelsen ved at du ikke lenger leser og skriver unødvendige data i serieprosessen.
Advarsler
- Java kommer ut med en ny versjon av utviklerens sett på nesten årlig basis. Nye versjoner inkluderer oppgraderinger og endringer i hvordan du kan serialisere et objekt i Java. Derfor er det viktig å overvåke endringene i versjonen du bruker.
- Når du serialiserer objekter, kan du ikke kryptere datastrømmer. Derfor må du stole på andre applikasjoner eller sekundære nettverkstransportprosesser for å beskytte dataene, om nødvendig.
- Det er for øyeblikket ikke noe alternativ som lar deg skrive objekter til en tilfeldig tilgangsfil. I stedet kan du bruke input -utgangsstrømmene for Byte Array som en plassholder for å lese og skrive objektene. Sørg imidlertid for at hele objektet er i Byte Array -strømmen, ellers vil prosessen mislykkes.