Kada serijalizirate objekt u Javi, podatke pretvarate u nizove bajtova koji se kasnije pretvaraju natrag u kopiju izvornih podataka. Ako ovo zvuči zbunjujuće, razmislite o serijalizaciji u sljedećim terminima. Radite na dokumentu, a zatim ga spremite na tvrdi disk. Govorite, serijski, podatke kako biste kasnije mogli preuzeti tu kopiju. Serijalizacija čini prijenos podataka na mrežama mnogo lakšim i učinkovitijim.
Važno je razumjeti osnove Jave prije serijalizacije objekta. Ako ste koristili programske jezike kao što su Pascal i starije verzije C, znat ćete da bez serijalizacije objekata programer mora stvoriti zasebnu U/I tekstualnu datoteku za pohranu i učitavanje podataka. Serijalizacija objekata u Javi zaobilazi stvaranje ove tekstualne datoteke za pohranu podataka, čime se štedi vrijeme i troškovi programiranja. Sljedeći članak sadrži korake za serijalizaciju objekta u Javi. Primjer koda u ovom članku korišten je zahvaljujući Java Java Developers Almanac 1.4.
Koraci
Korak 1. Otvorite objekt kodiranja Java koji zahtijeva serijalizaciju ili ga stvorite od početka
Korak 2. Odaberite objekt u Javi koji želite serijalizirati
U ovom primjeru taj ćemo objekt nazvati “MyObject”.
Korak 3. Omogućite serijalizaciju objekata u Javi tako da klasa MyObject implementira sučelje java.io. Serialize
Samo dodajte sljedeći kodni redak na početak koda, zamijenivši redak "javna klasa MyObject". Javna klasa MyObject implementira java.io. Serializable
Korak 4. Sada je vaš objekt moguće serijalizirati, što znači da se može zapisati izlaznim tokom, na ovaj način:
-
Sljedeći redovi koda ilustriraju kako zapisati MyObject (ili bilo koji objekt koji se može serijalizirati) na datoteku ili disk.
probati{
// Seriziranje podatkovnog objekta u datoteku
ObjectOutputStream out = novi ObjectOutputStream (novi FileOutputStream ("MyObject.ser"));
out.writeObject (objekt);
out.close ();
// Serijaliziranje podatkovnog objekta u bajt niz
ByteArrayOutputStream bos = novi ByteArrayOutputStream ();
out = novi ObjectOutputStream (bos);
out.writeObject (objekt);
out.close ();
// Dohvaćanje bajtova serijskog objekta
byte buf = bos.toByteArray ();
} catch (IOException e) {
}
Korak 5. Može se čitati ovako:
-
pokušajte {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream čitač = novi ObjectInputStream čitač (vrata); MyObject x = novi MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Korak 6. Izvršite serijski objektni kod unutar Java programa kako biste bili sigurni da djeluje učinkovito (izborno)
Korak 7. Spremite i zatvorite serijski objekt u Javi
Savjeti
- Poboljšanja serijalizacije u Java SE Development Kit 6 omogućuju vam da pomoću ObjectStreamClass-a potražite bilo koju metodu za rukovanje objektima klase koji se ne mogu serijalizirati.
- Da biste poboljšali vrijeme čitanja i pisanja u velikim stablima objekata, upotrijebite ključnu riječ "tranient" na primjer varijable koje ne zahtijevaju serijalizaciju. To će povećati performanse jer više ne čitate i ne upisujete nepotrebne podatke u proces serijalizacije.
Upozorenja
- Java izlazi s novom verzijom svog razvojnog pribora gotovo svake godine. Nove verzije uključuju nadogradnje i promjene načina na koji možete serijalizirati objekt u Javi. Stoga je važno pratiti promjene u verziji koju koristite.
- Prilikom serijalizacije objekata ne možete šifrirati tokove podataka. Stoga ćete se za zaštitu podataka, ako je potrebno, osloniti na druge aplikacije ili sekundarne mrežne transportne procese.
- Trenutno ne postoji opcija koja vam omogućuje pisanje objekata u datoteku sa slučajnim pristupom. Umjesto toga, možete koristiti ulazne izlazne tokove polja Byte Array kao rezervirano mjesto za čitanje i pisanje objekata. No, provjerite je li cijeli objekt u nizu Byte Array ili će proces uspjeti.