Keď serializujete objekt v Jave, konvertujete údaje na bajtové toky, ktoré sa neskôr prevedú späť na kópiu pôvodných údajov. Ak to znie mätúco, myslite na serializáciu v nasledujúcich pojmoch. Pracujete na dokumente a potom ho uložte na pevný disk. Stručne povedané, serializujete údaje, aby ste ich mohli neskôr získať. Vďaka serializácii je prenos údajov v sieťach oveľa jednoduchší a efektívnejší.
Je dôležité, aby ste pred serializáciou objektu pochopili základy Javy. Ak ste použili programovacie jazyky ako Pascal a staršie verzie C, budete vedieť, že bez serializácie objektov musí programátor vytvoriť samostatný textový súbor I/O na ukladanie a načítanie údajov. Serializácia objektu v Jave obchádza vytváranie tohto textového súboru na ukladanie údajov, čo šetrí čas a náklady na programovanie. Nasledujúci článok obsahuje kroky na serializáciu objektu v Jave. Vzorový kód v tomto článku je použitý s láskavým dovolením The Java Developers Almanac 1.4.
Kroky
Krok 1. Otvorte objekt kódovania Java, ktorý vyžaduje serializáciu, alebo ho vytvorte úplne od začiatku
Krok 2. Vyberte objekt v Jave, ktorý chcete serializovať
V tomto prípade tento objekt nazveme „MyObject“.
Krok 3. Povoliť serializáciu objektov v Jave vytvorením triedy MyObject na implementáciu rozhrania java.io. Serialize
Stačí pridať nasledujúci riadok kódu na začiatok kódu, ktorý nahradí riadok „verejná trieda MyObject“. Verejná trieda MyObject implementuje java.io. Serializable
Krok 4. Teraz je váš objekt serializovateľný, to znamená, že môže byť zapísaný výstupným prúdom, ako je tento:
-
Nasledujúce riadky kódu ilustrujú, ako zapísať MyObject (alebo akýkoľvek serializovateľný objekt) do súboru alebo na disk.
skúsiť {
// Serializácia dátového objektu do súboru
ObjectOutputStream out = nový ObjectOutputStream (nový FileOutputStream ("MyObject.ser"));
out.writeObject (objekt);
out.close ();
// Serializácia dátového objektu do bajtového poľa
ByteArrayOutputStream bos = nový ByteArrayOutputStream ();
out = nový ObjectOutputStream (bos);
out.writeObject (objekt);
out.close ();
// Získať bajty serializovaného objektu
bajt buf = bos.toByteArray ();
} catch (IOException e) {
}
Krok 5. Dá sa to čítať takto:
-
skúste {FileInputStream door = new FileInputStream ("name_of_file.sav"); Čítačka ObjectInputStream = nový ObjectInputStream (dvere); MyObject x = nový MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Krok 6. Vykonajte kód serializovaného objektu v programe Java, aby ste sa presvedčili, že funguje efektívne (voliteľné)
Krok 7. Uložte a zatvorte serializovaný objekt v Jave
Tipy
- Vylepšenia serializácie v Java SE Development Kit 6 vám umožňujú použiť akúkoľvek metódu vyhľadávania ObjectStreamClass na spracovanie akýchkoľvek neserializovateľných objektov triedy.
- Na zvýšenie doby čítania a zápisu vo veľkých stromoch objektov použite kľúčové slovo „prechodné“napríklad pre premenné, ktoré nevyžadujú serializáciu. To zvýši výkon v tom, že už viac nečítate a nezapisujete nepotrebné údaje do procesu serializácie.
Varovania
- Java prichádza s novou verziou súpravy pre vývojárov takmer každoročne. Nové verzie obsahujú inovácie a zmeny v spôsobe serializácie objektu v Jave. Preto je dôležité sledovať zmeny vo verzii, ktorú používate.
- Pri serializácii objektov nemôžete šifrovať toky údajov. Na ochranu údajov sa preto v prípade potreby budete musieť spoľahnúť na iné aplikácie alebo procesy sekundárnej siete.
- V súčasnosti neexistuje žiadna možnosť, ktorá vám umožňuje zapisovať objekty do súboru s náhodným prístupom. Namiesto toho môžete použiť vstupné výstupné toky Byte Array ako zástupný symbol, z ktorého môžete čítať a zapisovať objekty. Uistite sa však, že je celý objekt v streame Byte Array, inak proces zlyhá.