2010-12-28 14 views
107
public class Contact implements Serializable { 
    private String name; 
    private String email; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 
} 
  1. ¿Cuándo debo implementar la interfaz Serializable?
  2. ¿Por qué hacemos eso?
  3. ¿Le da alguna ventaja o seguridad?

Respuesta

106
  1. De What's this "serialization" thing all about?:

    Se le permite tomar un objeto o grupo de objetos, ponerlos en un disco duro o enviarlos ellos a través de un cable o mecanismo transporte inalámbrico, y más tarde , quizás en otra computadora, invierta el proceso: resucite el objeto (s) original . Los mecanismos básicos son aplanar objeto (s) en un flujo de bits unidimensional , y a convertir ese flujo de bits nuevamente en el objeto (s) original .

    Al igual que el transportador de Star Trek, Es todo acerca de tomar algo complicado y convirtiéndolo en un plano secuencia de 1s y 0s, a continuación, teniendo esa secuencia de 1s y 0s (posiblemente en otro lugar, posiblemente en otra vez time) y reconstruir el original complicado "algo".

    Así, implementar la interfaz Serializable cuando se necesita para almacenar una copia del objeto, enviarlos a otro proceso en el mismo sistema o en la red.

  2. Porque desea almacenar o enviar un objeto.

  3. Hace que almacenar y enviar objetos sea más fácil. No tiene nada que ver con la seguridad.

+3

Es una buena práctica implementar una interfaz seriable para todos los modelos de dominio ... – theJava

+6

@theJava No es una cuestión de mejores prácticas. Se trata de si necesita series de bytes o no. – marcog

+1

Al usar JSON, no tiene que implementar esta interfaz y simplemente puede enviar esa cadena ... así que todavía no estoy seguro de por qué usar esta interfaz cuando puede usar JSON. –

29
  1. implementar la interfaz Serializable cuando se quiere ser capaz de convertir una instancia de una clase en una serie de bytes o cuando se considera que un objeto Serializable podría hacer referencia a una instancia de la clase.

  2. Serializable clases son útiles cuando desea persistir instancias de ellas o enviarlas a través de un cable.

  3. Las instancias de las clases Serializable se pueden transmitir fácilmente. La serialización tiene algunas consecuencias de seguridad, sin embargo. Lea la "Java efectiva" de Joshua Bloch.

Cuestiones relacionadas