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, para que podamos transmitirlo a través de la red (usando tecnologías como JPA y RMI).
Crear unFileOutputStreamAsegúrese de que la clase implemente la interfaz Serializable.
Al pasar el objeto que representa el archivo al que se debe almacenar el objeto (ruta abstracta).FileOutputStreamObjeto para crear el objeto ObjectOutputStream.
Usar el método writeObject() para escribir un objeto en el archivo.
Deserialización de objeto
Crear unFileInputStreamObjeto que representa el archivo que contiene el objeto serializado.
Usar el método readObject() para leer un objeto desde el archivo.
Usar el objeto obtenido.
AConstructor Es un método similar y cuando se llama al objeto de la clase creada en el tiempo, generalmente se utiliza para inicializar las variables de una instancia de la clase. El constructor tiene el mismo nombre que su clase y no tiene tipo de retorno.
Si no se proporciona un constructor, el compilador representará por usted la definición de un constructor que inicializará las variables de instancia del objeto con valores predeterminados.
Nunca se llama al constructor de la clase cuando se deserializa un objeto. Considera el siguiente ejemplo, aquí hay una clase llamada Student, con dos variables de instancia y un constructor por defecto (inicializado con dos valores hardcodeados) y un constructor parametrizado.
El método display() de esta clase muestra los valores de las variables de la instancia actual.
Nosotros pasamos dos valores (vani y27)y serializamos para crear un objeto de la clase Student.
Cuando deserializamos este objeto y llamamos al método display(), se imprimirán los valores que pasamos. Las variables estáticas imprimirán el nuevo (valor actual) 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{ //Creación de 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(); //Impresión de datos antes de la deserialización System.out.println("Valor antes de la deserialización"); std.display(); //Cambio de valor de variable estática std.setYear(2019); //Cambio de valor de variable de instancia std.setName("Varada"); //Cambio de valor de variable transitoria 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 deserializado"); deSerializedStd.display(); } }
Resultado de la salida
Valor antes de la deserialización Nombre: Vani Edad: 27 Año: 2018 Objeto serializado...... Objeto de-serializado...... Valor deserializado Nombre: Vani Edad: 0 Año: 2019