Serialización de 49 objetos

Serialización de objetos

  Casi mientras sea un desarrollo de Java, debe haber un concepto de serialización.A medida que el concepto de serialización se ha desarrollado gradualmente, han surgido gradualmente más estándares de serialización.

Conceptos básicos de serialización de objetos

  La denominada serialización de objetos se refiere al procesamiento de objetos almacenados en la memoria en forma de un flujo de datos binarios, que puede realizar el almacenamiento de objetos o la transmisión de la red.   Sin embargo, no todos los objetos se pueden serializar.Hay un requisito obligatorio en Java: si desea serializar un objeto, la clase donde se encuentra el objeto debe implementar la interfaz principal java.io.Serializable como una marca de serialización. Esta interfaz no tiene ningún método, porque describe las capacidades de una clase. Definir una clase que se pueda serializar.
y5cIT1.png

import java.io.Serializable;

@SuppressWarnings("serial")		//压制警告
class Person implements Serializable{
    
    	//Person可以被序列化	
	private String name;
	private int age;
	public Person(String name, int age) {
    
    
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
    
    
		return "Person [name=" + name + ", age=" + age + "]";
	}
}

  En este momento, cada objeto producido por la clase Person puede realizar una transmisión de datos binarios y pertenecer a una clase de programa que se puede serializar.

Procesamiento de serialización y deserialización

  Después de haber serializado las clases de soporte, si desea implementar operaciones de serialización y deserialización, puede usar las siguientes dos clases para completar:

Nombre de la clase Serialización: ObjectOutputStream Deserialización: ObjectInputStream
Definición de clase public class ObjectOutputStream extends OutputStream implements ObjectOutput,ObjectStreamConstants public class ObjectInputStream extends implements ObjectInput,ObjectStreamConstants
Método de construcción public ObjectOutputStream(OutputStream out) throws IOException public ObjectInputStream(InputStream in) throws IOException
método public final void writeObject(Object obj) throws IOException public final Object readObject() throws IOException,ClassNotFoundException

Realice la serialización y deserialización

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

@SuppressWarnings("serial")		//压制警告
class Person implements Serializable{
    
    	//Person可以被序列化	
	private String name;
	private int age;
	public Person(String name, int age) {
    
    
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
    
    
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
}

public class Basic_study {
    
    
	public static final File SAVE_FILE = new File("C:\\Project\\Java_study\\src\\文件\\test.person");
	public static void main(String[] args) throws Exception {
    
    
		//saveObject(new Person("lyz",18));
		System.out.println(loadObject());
	}
	public static void saveObject(Object obj) throws Exception{
    
    
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(SAVE_FILE));
		oos.writeObject(obj);		//序列化
		oos.close();
	}
	public static Object loadObject() throws Exception{
    
    
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(SAVE_FILE));
		Object obj = ois.readObject();		//反序列化
		ois.close();
		return obj;
	}
}

  La serialización y deserialización de objetos en Java debe utilizar el flujo de operaciones de objetos proporcionado internamente, ya que implica el formato de datos binarios, por lo que no se puede personalizar. Además, si desea realizar la creación de instancias de un grupo de objetos, puede utilizar un matriz de objetos para completar.
  En el desarrollo de muchos proyectos reales, los desarrolladores rara vez ven la operación directa de las clases ObjectOutputStream y ObjectInputStream, porque habrá algunos contenedores para ayudar a los desarrolladores a implementarlos automáticamente.

palabra clave transitoria

  Por defecto, cuando se realiza la serialización del objeto, se serializará todo el contenido de todos los atributos de la clase, pero en muchos casos hay algunos atributos que no necesitan ser serializados. Después de esta reunión, puede definir los atributos. Utilizar la palabra clave transitoria para completar.
private transient String name;
  Durante la serialización, el contenido del atributo de nombre esNo se salvaráA continuación, en otras palabras, el nombre de los datos leídos será el valor predeterminado de su tipo de datos correspondiente.
  Si se supone que algunas propiedades de la clase que deben calcularse y guardarse a menudo no necesitan serializarse, utilice transitorio en este momento. En el desarrollo real, la mayoría de las clases que deben serializarse son a menudo clases Java simples.

Supongo que te gusta

Origin blog.csdn.net/MARVEL_3000/article/details/114440939
Recomendado
Clasificación