Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo garantizar la integridad de los datos durante la serialización y deserialización de objetos Java durante la transmisión por socket

Cómo garantizar la integridad de los datos durante la serialización y deserialización de objetos Java durante la transmisión por socket

ObjectInputStream y ObjectOutputStream son dos clases contenedoras que se utilizan para leer datos de tipo de objeto del flujo de entrada subyacente y escribir datos de tipo de objeto en el flujo de salida subyacente. Guardar los valores de todas las variables miembro en el objeto equivale a guardar el objeto, y restaurar los valores de todas las variables miembro en el objeto equivale a leer el objeto.

Los objetos leídos y escritos por las clases ObjectInputStream y ObjectOutputStream deben implementar la interfaz Serializable. Las variables miembro de tipo transitorio (un signo que indica que la variable es temporal) y estática en el objeto no se leerán ni escribirán. Estas dos clases se pueden utilizar para transferir objetos en flujos de red.

(transient: palabra clave del lenguaje Java, modificador de variable. Si usa transitorio para declarar una variable de instancia, no necesita mantener su valor al almacenar el objeto.

La serialización de Java proporciona un mecanismo para persistir instancias de objetos. Cuando un objeto persiste, puede haber un miembro de datos de objeto especial que no queremos usar para guardar el mecanismo de serialización. Para desactivar la serialización en el dominio de un objeto específico, podemos. Agregue la palabra clave transitoria antes de este campo. Cuando el objeto se serializa, los valores de las variables transitorias no se incluyen en la representación serializada, pero se incluyen las variables no transitorias de la clase MyClass. >La clase pública MyClass implementa Serializable{

El hilo transitorio público t; //t no será serializado.

Cadena privada customerID

Interés total privado

}

Ejemplo de programación: cree un objeto de estudiante serializable, utilizando los almacenes de clases ObjectOutputStream. en un archivo (mytext.txt) y luego usa la clase ObjectInputStream para leer los datos almacenados en un objeto de estudiante, es decir, para restaurar el objeto de estudiante guardado.

[java]Ver texto sin formato

Importar Java .io *;

El estudiante de la clase implementa Serializable//La interfaz Serializable debe implementarse para serializar.

{

int edad

Nombre de cadena;

Estudiante (entero, nombre de cadena){

este .age = edad;

this.name = nombre

}

}

Clase pública Iotest {

/**

* @param args

*/

Public static void main(String[] args) {

/ /TODO código auxiliar de método generado automáticamente

Estudiante stu1 = Estudiante de primer año (20, "Zhang San");

Estudiante stu2 = Estudiante de primer año (22, "Lisi"); >

Pruebe {

flujo de salida de archivo fos = nuevo flujo de salida de archivo(" a . txt ");

flujo de salida de objeto OOS = nuevo flujo de salida de objeto(fos);

OOS . escribirobjeto(estu 1);

OOS .escribirobjeto(estu 2);

cerrar(); archivo inputstream fis = nuevo archivo inputstream(" a . txt ");

ObjectInputStream ois = new ObjectInputStream(fis

Estudiante stu3 = (estudiante) ois . ;

sistema . println(" edad: " estu 3 . edad);

sistema salida . >

} catch(excepción de archivo no encontrado e){

//TODO bloque catch generado automáticamente

e.printstacktrace();

} catch (IOException e) {

//TODO bloque catch generado automáticamente

e. printstacktrace();

} catch (ClassNotFoundException e){

//TODO bloque de captura generado automáticamente

e printstacktrace();

}

}

}