Contenido de certificación
Buscar
Social
Ofertas laborales ES
« Java puzzle: la inexplicable ConcurrentModificationException | Main | Evaluando uCertify como kit de preparacion para la certificacion OCP »
viernes
mar232012

Serialización de objetos en Java.

Este post tiene como objetivo tratar, analizar y discutir la serialización en Java, tanto a nivel de teoría como de práctica.

TEORIA

Para ello, revisemos primero los siguientes conceptos:

-¿Qué es serialización? Se trata del proceso en el cual una instancia de un objeto pasa a ser un flujo de bytes, para poder almacenar su estado de una manera persistente.

-¿Dentro de Java, qué tenemos que hacer para hacer una clase serializable? Dentro de una clase Java, todos los atributos de la misma deben ser serializables, si uno de estso atributos no lo es, e intentamos serializar el objeto, tendremos una excepción en tiempo de ejecución.

-¿Los tipos primitivos son serializables? Todos los tipos primitivos son serializables por definición.

-¿Cómo podemos hacer que una clase sea serializable? Dicha clase debe implementar la interfaz java.io.Serializable.

PRÁCTICA

package classes;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Casa implements Serializable{
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    public Integer id;
    public String direccion;
    public Residente residente;
   
   
    public Casa(Integer id, String direccion, Residente residente) {
        super();
        this.id = id;
        this.direccion = direccion;
        this.residente = residente;
    }       

    @Override
    public String toString() {
        return "Casa [id=" + id + ", direccion=" + direccion + ", residente="
                + residente + "]";
    }

    public static void main(String args[]) throws FileNotFoundException, IOException{
        Casa casa = new Casa(1,"direccion",new Residente("nombre","apellidos"));
        File file = new File("serializable.txt");
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
        oos.writeObject(casa);
       
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
        try {
            Casa casaLeida = (Casa)ois.readObject();
            System.out.println("Casa Leida" + casaLeida.toString());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }   
}

class Residente implements Serializable{
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    public String nombre;
    public String apellidos;
   
    public Residente(String nombre, String apellidos) {
        super();
        this.nombre = nombre;
        this.apellidos = apellidos;
    }

    @Override
    public String toString() {
        return "Residente [nombre=" + nombre + ", apellidos=" + apellidos + "]";
    }       
   
}

Siendo la salida:

Casa LeidaCasa [id=1, direccion=direccion, residente=Residente [nombre=nombre, apellidos=apellidos]]

 

 

 

-¿Qué es serialización? Se trata del proceso en el cual una instancia de un objeto pasa a ser un flujo de bytes, para poder almacenar su estado de una manera persistente.

 

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>