English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La serialización y la externalización son procesos que convierten objetos en bytes de flujo y almacenan el flujo de bytes en bases de datos o memoria. Las clases que implementan la interfaz java.io.Serializable pueden ser serializadas. Por otro lado, según los requisitos de la aplicación, la externalización se utiliza para la serialización personalizada. La externalización extiende java.io.Serializable.
Número de serie | Clave | Serialización | Externalización |
---|---|---|---|
1 | Interfaz | La serialización es una interfaz de marca | La externalización contiene dos métodos: readExternal y writeExternal. |
2 | Lógica de implementación | Las clases que implementan este interfaz delegan la responsabilidad de la serialización o persistencia a Java JVM. JVM utiliza readObject y writeObject para la serialización | La externalización proporciona lógica de control de implementación al sobrescribir los métodos readExternal y writeExternal. |
3 | Métodos para ignorar variables | En la serialización, el JVM ignora las variables transitorias durante la serialización y deserialización de objetos Java. | Los programadores pueden escribir su propia lógica para ignorar ciertas variables en el proceso de externalización de objetos Java. |
4 | Rendimiento | En la interfaz serializable, el uso de reflexión puede causar una disminución en el rendimiento. | La externalización permite un control completo de la implementación. |
5 | Serialización de objetos heredados | 1Si la superclase no se puede serializar, la subclase aún puede ser serializada. 2Si la subclase no se serializa pero la superclase se serializa automáticamente | También podemos aplicarlo a la externalización. |
class ExternalizableExample implements Externalizable { Integer id; @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeInt(id); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { this.id = in.readInt(); } }
class SerializableExample implements Serializable { private static final long serialVersionUID = 5081877L; String nombre; }