2011-12-25 19 views

Respuesta

6

Una explicación detallada (aunque la gramática del artículo podría mejorarse) se puede encontrar en http://www.jusfortechies.com/java/core-java/externalization.php. La respuesta corta, para referencia futura en caso de que la página vinculada desaparezca:

Externalizable es una interfaz que se extiende Serializable. Contrariamente a Serializable, sin embargo, los objetos no se restauran simplemente leyendo la corriente de bits serializada, sino que se llama al constructor público y solo una vez que se crea el objeto, se restablece su estado. Esto hace que la restauración sea más eficiente.

Editar: Véase también What is the difference between Serializable and Externalizable in Java?.

+0

¿De qué constructor público está hablando, dado que esta es una interfaz? ¿O te refieres al artículo vinculado? –

+0

Me refiero al mismo constructor sobre el que se trata la pregunta, concretamente el de la clase implementadora. – jstarek

+0

Ah, lo leí mal. ¡Gracias! Su respuesta sería más acertada si menciona que llama a los métodos de implementación directamente en el constructor. Dicho eso, tu respuesta es mejor que la mía. :) –

1

Esto se utiliza principalmente para el almacenamiento en caché. Con el fin de deserializar través de corrientes, que tendrá que explicar cómo quiere que su objeto sea deserializado, por lo tanto, los dos métodos proporcionados por el contrato en Externalizable interfaz: writeExternal y readExternal. Tenga en cuenta que Externalizable se extiende a Serializable, por lo que no es necesario implementar la interfaz Serializable (aunque es una interfaz de marcador y no hay métodos para implementar realmente). Para obtener una implementación de muestra, consulte MimeType.

0

Se necesita un constructor público no-arg al usar la interfaz Externalizable.

Debido a que en caso de Serializable

  1. readObject lee la información requerida del ObjectInputStream
  2. serialización utiliza el mecanismo de reflexión para obtener los campos necesarios y sus valores correspondientes.
  3. Serializable serializa todos los miembros de datos (excepto estáticos y transitorios).

Pero en caso de Externalizable

  1. No existe ningún mecanismo de reflexión utilizado.
  2. El usuario no serializa todos los miembros de datos. Por eso, para obtener valores de los miembros que no se han publicitado públicamente, no se requiere ningún constructor de argumentos.
Cuestiones relacionadas