Quan serialitzeu un objecte a Java, convertiu les dades en fluxos de bytes que després es convertiran de nou en una còpia de les dades originals. Si això sembla confús, penseu en la serialització en els termes següents. Esteu treballant en un document i deseu-lo al disc dur. A manera de parlar, esteu serialitzant les dades perquè pugueu recuperar aquesta còpia més endavant. La serialització facilita i eficaç la transferència de dades a les xarxes.
És important que entengueu els conceptes bàsics de Java abans de serialitzar un objecte. Si heu utilitzat llenguatges de programació com Pascal i versions anteriors de C, sabreu que sense la serialització d'objectes, un programador ha de crear un fitxer de text d'E / S independent per emmagatzemar i carregar dades. La serialització d'objectes a Java ignora la creació d'aquest fitxer de text per emmagatzemar dades, estalviant temps i costos de programació. L'article següent conté els passos per serialitzar un objecte a Java. El codi de mostra d’aquest article s’utilitza cortesia de The Java Developers Almanac 1.4.
Passos
Pas 1. Obriu l'objecte de codificació Java que requereix serialització o creeu-ne un des de zero
Pas 2. Seleccioneu l'objecte a Java que vulgueu serialitzar
En aquest exemple, anomenarem aquest objecte "El meu objecte".
Pas 3. Activeu la serialització d'objectes a Java fent que la classe MyObject implementi la interfície java.io. Serialize
Només cal afegir la següent línia de codi al principi del codi, substituint la línia "public class MyObject". La classe pública MyObject implementa java.io. Serializable
Pas 4. Ara el vostre objecte es pot serialitzar, això vol dir que es pot escriure mitjançant un flux de sortida, així:
-
Les línies de codi següents il·lustren com escriure MyObject (o qualsevol objecte serialitzable) en un fitxer o disc.
provar {
// Serialitzar l'objecte de dades a un fitxer
ObjectOutputStream out = nou ObjectOutputStream (nou FileOutputStream ("MyObject.ser"));
out.writeObject (objecte);
out.close ();
// Serialitzar l'objecte de dades a una matriu de bytes
ByteArrayOutputStream bos = new ByteArrayOutputStream ();
out = new ObjectOutputStream (bos);
out.writeObject (objecte);
out.close ();
// Obteniu els bytes de l'objecte serialitzat
byte buf = bos.toByteArray ();
} catch (IOException e) {
}
Pas 5. Es pot llegir així:
-
proveu {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream lector = nou ObjectInputStream (porta); MyObject x = new MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Pas 6. Executeu el codi d'objecte serialitzat dins del programa Java per assegurar-vos que funciona correctament (opcional)
Pas 7. Deseu i tanqueu l'objecte serialitzat a Java
Consells
- Les millores de serialització del Java SE Development Kit 6 us permeten utilitzar ObjectStreamClass per buscar qualsevol mètode per gestionar qualsevol objecte de classe no serialitzable.
- Per millorar els temps de lectura i escriptura en arbres d'objectes grans, utilitzeu la paraula clau "transitòria" per exemple, variables que no requereixen serialització. Això augmentarà el rendiment ja que ja no llegiu ni escriviu dades innecessàries al procés de serialització.
Advertiments
- Java surt amb una nova versió del kit del seu desenvolupador gairebé cada any. Les noves versions inclouen actualitzacions i canvis en la manera de serialitzar un objecte a Java. Per tant, és important controlar els canvis en la versió que utilitzeu.
- Quan es serialitzen objectes, no es poden xifrar fluxos de dades. Per tant, haureu de confiar en altres aplicacions o processos de transport de xarxa secundaris per protegir les dades, si cal.
- Actualment no hi ha cap opció que us permeti escriure objectes en un fitxer d'accés aleatori. En lloc d'això, podeu utilitzar els fluxos de sortida d'entrada Byte Array com a marcador de posició des del qual llegir i escriure els objectes. Tanmateix, assegureu-vos que l'objecte sencer es troba al flux Byte Array o el procés fallarà.