English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Texto
Serialización de objeto-
En Java, la serialización es un concepto a través del cual podemos escribir el estado del objeto en un flujo de bytes, de modo que podemos transmitirlo a través de la red (usando tecnologías como JPA y RMI).
Crear unaFileOutputStreamAsegúrese de que esta clase implemente la interfaz Serializable.
Al pasar el objeto que representa el archivo al que se va a almacenar el objeto (ruta abstracta).FileOutputStreamObjeto para crear un objeto ObjectOutputStream.
Escribir un objeto en el archivo usando el método writeObject().
Deserialización de objeto
Crear unaFileInputStreamObjeto, que representa el archivo que contiene el objeto serializado.
Leer un objeto desde un archivo usando el método readObject().
Usar el objeto obtenido.
Cuando solo deserializamos un objeto, las variables de instancia se guardarán y tendrán los mismos valores después de este proceso.
Las variables transitorias - Nunca consideraréLas variables transitoriassus valores (excluyéndolos del proceso de serialización). Por ejemplo, cuando declaramos una variable transitoria, después de la deserialización, su valor siempre será null, false o cero (valor por defecto).
Las variables estáticas - no se conservarán durante el proceso de desserializaciónLas variables estáticaslos valores. De hecho, las variables estáticas no se serializan, pero porque pertenecen a la clase. Después de la deserialización, obtienen los valores actuales de la clase.
En este programa, cambiamos los valores de la instancia, las variables estáticas y transitorias de la clase antes de la desserialización.
Después de este proceso, los valores de las variables de instancia serán idénticos. Las variables temporales mostrarán los valores por defecto, mientras que las variables estáticas mostrarán los nuevos (actuales) valores de la clase.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Student implements Serializable{ private String name; private transient int age; private static int year = 2018; public Student(){ System.out.println("This is a constructor"); this.name = "Krishna"; this.age = 25; } public Student(String name, int age){ this.name = name; this.age = age; } public void display() { System.out.println("Name: ",+this.name); System.out.println("Age: ",+this.age); System.out.println("Year: ",+Student.year); } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public void setYear(int year) { Student.year = year; } } public class SerializeExample{ public static void main(String args[]) throws Exception{ //Crear un objeto Student Student std = new Student("Vani", 27); //Serialización de objeto FileOutputStream fos = new FileOutputStream("e:\\student.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(std); oos.close(); fos.close(); //Imprimir datos antes de la deserialización System.out.println("Valor antes de la deserialización:"); std.display(); //Cambiar el valor del variable estático std.setYear(2019); //Cambiar el valor del variable de instancia std.setName("Varada"); //Cambiar el valor del variable de instancia std.setAge(19); System.out.println("Objeto serializado......"); //Deserialización de objeto FileInputStream fis = new FileInputStream("e:\\student.ser"); ObjectInputStream ois = new ObjectInputStream(fis); Student deSerializedStd = (Student) ois.readObject(); System.out.println("Objeto de-serializado......"); ois.close(); fis.close(); System.out.println("Valor después de la deserialización:"); deSerializedStd.display(); } }
Resultado de salida
Valor antes de la deserialización: Nombre: Vani Edad: 27 Año: 2018 Objeto serializado...... Objeto de-serializado...... Valor después de la deserialización: Nombre: Vani Edad: 0 Año: 2019