Når du serialiserer et objekt i Java, konverterer du dataene til byte -streams, der senere konverteres tilbage til kopien af de originale data. Hvis dette lyder forvirrende, skal du tænke på serialisering i følgende termer. Du arbejder på et dokument og gemmer det derefter på din harddisk. Du serialiserer dataene sådan set, så du senere kan hente den kopi. Serialisering gør overførsel af data på netværk meget lettere og mere effektiv.
Det er vigtigt, at du forstår det grundlæggende i Java, før du serieliserer et objekt. Hvis du har brugt programmeringssprog som Pascal og ældre versioner af C, ved du, at uden objektserialisering skal en programmør oprette en separat I/O -tekstfil for at gemme og indlæse data. Objektserialisering i Java omgår oprettelse af denne tekstfil til lagring af data, hvilket sparer tid og programmeringsomkostninger. Den følgende artikel indeholder trinene til at serialisere et objekt i Java. Eksempelkoden i denne artikel bruges med tilladelse fra The Java Developers Almanac 1.4.
Trin
Trin 1. Åbn det Java -kodende objekt, der kræver serialisering, eller opret et fra bunden
Trin 2. Vælg det objekt i Java, du vil serialisere
I dette eksempel vil vi kalde dette objekt "MyObject."
Trin 3. Aktivér objektserialisering i Java ved at få MyObject -klassen til at implementere java.io. Serialize -grænsefladen
Tilføj blot følgende kodelinje i begyndelsen af koden, og erstat "public class MyObject" line.public class MyObject implementerer java.io. Serializable
Trin 4. Nu kan dit objekt serialiseres, det betyder, at det kan skrives af en output -strøm, sådan her:
-
Følgende kodelinjer illustrerer, hvordan man skriver MyObject (eller et objekt, der kan serialiseres) 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 et byte -array
ByteArrayOutputStream bos = new ByteArrayOutputStream ();
out = ny ObjectOutputStream (bos);
out.writeObject (objekt);
out.close ();
// Hent byte af det serialiserede objekt
byte buf = bos.toByteArray ();
} fangst (IOException e) {
}
Trin 5. Det kan læses sådan:
-
prøv {FileInputStream door = ny FileInputStream ("name_of_file.sav"); ObjectInputStream -læser = ny ObjectInputStream (dør); MyObject x = nyt MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Trin 6. Udfør den serialiserede objektkode i Java -programmet for at sikre, at den fungerer effektivt (valgfrit)
Trin 7. Gem og luk det serialiserede objekt i Java
Tips
- Serialiseringsforbedringer i Java SE Development Kit 6 giver dig mulighed for at bruge ObjectStreamClass til at slå enhver metode op til at håndtere alle ikke-serialiserbare klasseobjekter.
- For at forbedre læse- og skrivetider i store objekttræer skal du bruge søgeordet "forbigående" for eksempel variabler, der ikke kræver serialisering. Dette vil øge ydeevnen ved, at du ikke længere læser og skriver unødvendige data i serialiseringsprocessen.
Advarsler
- Java kommer ud med en ny version af deres udviklersæt på næsten årsbasis. Nye versioner inkluderer opgraderinger og ændringer af, hvordan du kan serialisere et objekt i Java. Derfor er det vigtigt at overvåge ændringerne i den version, du bruger.
- Når du serialiserer objekter, kan du ikke kryptere datastrømme. Derfor skal du stole på andre applikationer eller sekundære netværkstransportprocesser for at beskytte dataene, hvis det er nødvendigt.
- Der er i øjeblikket ingen mulighed, der giver dig mulighed for at skrive objekter til en tilfældig adgangsfil. I stedet kan du bruge Byte Array input output streams som en pladsholder, hvorfra du kan læse og skrive objekterne. Vær dog sikker på, at hele objektet er i Byte Array -strømmen, ellers vil processen mislykkes.