JavaSE- serialización de objetos, IO

1. objeto serializado

- mecanismo de serialización de objetos permite a la memoria independiente de la plataforma convertir objetos Java en una corriente binaria, permitiendo así que el flujo binario que se almacena de forma permanente en un disco, un binario tal, o streaming a través de una red a otro nodo de la red. // Cuando este otro programa adquirió flujo binario, se puede restaurar a la Java objeto original
- ventaja serialización es que cualquier objeto que implementa la interfaz Serializable puede convertir en bytes de datos, puede ser durante el almacenamiento y el transporte reducción

  • La serialización es RMI (Remote Method Invoke - Invocación Remote Method) mecanismo de los parámetros del proceso y valores de retorno debe lograr, y RMI es la base de JavaEE. Por lo tanto mecanismo de serialización es la base de la plataforma JavaEE
  • Si usted necesita para hacer un mecanismo de serialización de objetos soportes, hay que dejar que la clase y sus propiedades objeto pertenece es serializable, con el fin de permitir que una clase es de serie, la clase debe implementar una de las dos interfaces siguientes. De otro modo, una excepción será lanzada NotSerializableException
    Serializable
    Externalizable

2. interfaz Serializable

  • Cualquier clase Serializable implementos que representa una variable estática tiene un identificador de versión serializada:
    privado a largo static final serialVersionUID;
    serialVersionUID utiliza para indicar la compatibilidad entre diferentes versiones de la clase. En pocas palabras, su propósito es serializar objetos de control de versiones es compatible al deserializar sobre cada versión.
    Si las clases no definen la constante estática cuyo valor es los detalles internos del entorno de ejecución de Java de acuerdo con la clase generada automáticamente. Si las variables de instancia de clase ha sido modificado, serialVersionUID puede cambiar. Se sugiere, declaró de forma explícita.
  • En pocas palabras, el mecanismo de serialización de Java es mediante la determinación de la clase en la versión de tiempo de ejecución serialVersionUID para verificar la consistencia. Durante la deserialización, JVM llegó bytes corriente serialVersionUID serialVersionUID con la respectiva clase de entidad local se comparan, se considera que es consistente si la misma se puede deserializar, de lo contrario habrá una versión serializada excepción inconsistente. (InvalidCastException)

3. Objeto corriente objeto serializado

  • Si una interfaz Serializable implementa la clase, objeto de esta clase es serializable:
    Crear un ObjectOutputStream
    llamando ObjectOutputStream objeto writeObject (Objeto) Método de salida a un objeto serializado
    nota por escrito una vez, la operación de descarga () una vez
  • Deserialización
    crear un ObjectInputStream
    llamada readObject () método lee la corriente de objeto
  • Destacó: Si la propiedad no es una clase de tipos de datos básicos o de tipo String, pero otro tipo de referencia, a continuación, los tipos de referencia debe ser serializado, o bien tener este tipo de clases de campo no se puede serializar
//序列化:将对象写入到磁盘或者进行网络传输。
//要求对象必须实现序列化
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(“data.txt"));
Person p = new Person("fcc", 18, "hangzhou", new Pet());
oos.writeObject(p);
oos.flush();
oos.close();
//反序列化:将磁盘中的对象数据源读出。
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(“data.txt"));
Person p1 = (Person)ois.readObject();
System.out.println(p1.toString());
ois.close();

4. problema

Hable acerca de su comprensión de la interfaz java.io.Serializable, sabemos que para la serialización, el método de interfaz está vacío, hay otra conocerá?

  • Objeto que implementa la interfaz Serializable, que se pueden convertir en una serie de bytes, y luego volver a la apariencia original totalmente restaurados. Este proceso también se puede llevar a cabo por la red. Esto significa que el mecanismo de serialización compensa automáticamente las diferencias entre los sistemas operativos. En otras palabras, se puede crear un objeto en una máquina Windows, serializarlo, y luego se envía a través de la red de una máquina Unix, entonces no es exacta re "asamblea". Representa un no me importa cómo los datos en diferentes máquinas, no se preocupan por el orden de bytes o cualquier otro detalle.
  • Como la mayoría de las clases como parámetros tales como cadena, entero y así lograr interfaces de java.io.Serializable pueden utilizarse también la naturaleza polimórfica, como un parámetro para hacer la interfaz más flexible.
Publicados 337 artículos originales · ganado elogios 77 · vistas 570 000 +

Supongo que te gusta

Origin blog.csdn.net/feicongcong/article/details/104903009
Recomendado
Clasificación