2011-03-10 30 views

Respuesta

12

serializable es una interfaz especial que especifica que la clase es serialiazable. Es especial porque a diferencia de una interfaz normal, no define ningún método que deba implementarse: simplemente marca la clase como serializable. Para obtener más información, consulte Java docs.

En cuanto a lo que "serializable" significa, simplemente significa convertir una instancia de una clase (un objeto) en un formato donde se puede escribir en el disco, o posiblemente transmitirse a través de una red. Por ejemplo, podría guardar su objeto en el disco y volver a cargarlo más tarde, con todos los valores de campo y el estado interno guardados. Vea la wikipedia page para más información.

+1

, pero ¿por qué hay una interfaz separada? Quiero decir, ¿cuál fue el daño al hacer que todo sea serializable? quiero decir, por definición, no está mal tenerlo todo el tiempo. Quiero decir que hay algún caso en el que si lo implemente y haga algo de daño y por eso las personas java lo hicieron opcional. Eventualmente, todo va a estar en el disco –

+0

@Pasha, porque para ciertos objetos no tiene sentido que sean serializables. También hay consideraciones de rendimiento. Lea esto para obtener información: http://java.sun.com/developer/technicalArticles/Programming/serialization/ –

+3

Si es nuevo en Java. Esta es una aplicación práctica del polimorfismo. Si una clase implementa una interfaz, esa clase se puede pasar a cualquier lugar donde su padre se pueda aceptar como argumentos. En este caso, la clase hija podría pasarse a funciones como Results.writeOutput (Serializable s) – nanospeck

1

Básicamente es una interfaz de marcador que dice que tu clase se puede serializar. Vea here para más información.

6

Si nunca serializa una instancia de Person, no tiene sentido declarar implements Serializable. Pero si no lo hace y trata de serializar una instancia, obtendrá un NotSerializableException.

1

Serializable es solo una interfaz de marcador. Está completamente vacío. Simplemente permite que el mecanismo de serialización verifique que la clase pueda persistir.

Véase también siguiendo Why Java needs Serializable interface?

+0

todos mencionan serializar, pero ¿qué significa realmente esa palabra? –

+0

@Pasha serialización es el proceso de convertir una estructura de datos u objeto en un formato que se puede almacenar (por ejemplo, en un archivo o memoria intermedia, o transmitirse a través de un enlace de conexión de red) y "resucitar" más tarde en el mismo u otro entorno informático. Cuando la serie resultante de bits se vuelve a leer de acuerdo con el formato de serialización, se puede usar para crear un clon semánticamente idéntico del objeto original. – ashishjmeshram

0

El J2SE doc dice:

Serializabilidad de una clase está habilitado de la clase que implementa la interfaz java.io.Serializable. Las clases que no implementen esta interfaz no tendrán ninguno de sus estados serializados o deserializados. Todos los subtipos de una clase serializable son ellos mismos serializables. La interfaz de serialización no tiene métodos o campos y sirve solo para identificar la semántica de ser serializable.

Básicamente, es la interfaz que debe implementar para serializar clases en java.

3

La serilaización garantiza que los datos se pueden enviar a través de la red y se pueden conservar y restaurar a su estado original utilizando el mecanismo de serialización/deserialización.

Cuestiones relacionadas