domingo, 8 de junio de 2014

SERIALIZACIÓN

La serialización es un proceso por el que un objeto cualquiera se puede convertir en una secuencia de bytes con la que más tarde se podrá reconstruir dicho objeto manteniendo el valor de sus variables. Esto permite guardar un objeto en un archivo o mandarlo por la red. 

Para que una clase pueda utilizar la serialización. debe implementar la interface Serializable. que no define ningún método. Casi todas las clases estándar de Java son seríalizables. La clase MiClase se podría señalizar declarándola como:

public class MiClase implements Serializable { }

Para escribir y leer objetos se utilizan las clases ObjectlnputStream y ObjectOutputStream. que cuentan con los métodos wríteObject() y reaclObject(). Por ejemplo:

ObjectOutputStream objout = new ObjectOutputStream(
new FileOutputStream("archivo.x"));
String s = new StringC'Me van a serializar");
objout.writeObject(s);

ObjectlnputStream objin = new ObjectlnputStream(new FilelnputStream("archivo.x"));
String s2 = (String)objin.readobject(); Es importante tener en cuenta que readObject() devuelve un Object sobre el que se deberá hacer un casting para que el objeto sea útil. La reconstrucción necesita que el archivo *.class esté al alcance del programa (como mínimo para hacer este casting). 
Al serializar un objeto, automáticamente se señalizan todas sus variables y objetos miembro. A su vez se señalizan los que estos objetos miembro puedan tener (todos deben ser serializables). También se reconstruyen de igual manera. Si se señaliza un lector que contiene varios Strlngs. todo ello se convierte en una serie de bytes. Al recuperarlo la reconstrucción deja todo en el lugar en que se guardó. 
Si dos objetos contienen una referencia a otro, éste 110 se duplica si se escriben o leen ambos del mismo stream. Es decir, si el mismo String esmviera contenido dos veces en el Vector, sólo se guardaría una vez y al recuperarlo sólo se crearía un objeto con dos referencias contenidas en el vector.

No hay comentarios:

Publicar un comentario