Serialización de objetos y deserialización Ejemplos

Antes de que yo estaba a punto de cumplir un blog el serialización de objetos, hoy vi algo acerca de la serialización de objetos en un libro de texto, por lo que quería escribirlo impresión más profunda

1. Objeto serialización de objetos se convierte en una secuencia de bytes, mientras que el objeto se deserializa
    1) secuencia serializada (la ObjectOutputStream), una filtración de flujo
      ObjectOutputStream writeObject (Object) objeto serializado
      ObjectInputStream readObject () objeto se deserializar
    2) la secuencia de las interfaces (serializable)
      objeto debe implementar las "interfaces en serie" a ser serializados, o no puede aparecer excepción serializar!
      Serializable es una interfaz vacía, no hay ninguna manera, ya que sólo un identificador serializado
    3) especificación JavaBeans, clase Java debe implementar la interfaz Serializable
      clase en el API está en línea con más java especificación Java Bean, básicamente dado cuenta Serializable
    4 ) serialización y dE-objetos pueden disimular una copia profunda de un objeto que implementa el
      
    caso 1:
         

	public static void main(String[] args) throws Exception {
		String file ="F:/temp/obj.dat";
		//1.对象序列化
		FileOutputStream fos=new FileOutputStream(file);
		ObjectOutputStream out=new ObjectOutputStream(fos);
		
		Foo foo=new Foo();
		foo.setAge("12");
		foo.setSex("男");
		Foo f2=new Foo();
		f2.setAge("24");
		f2.setSex("女");
		out.writeObject(foo);//序列化,将对象写入到流中
		out.writeObject(f2);
		
		out.close();
		
		//2.对象的反序列化
		FileInputStream fis=new FileInputStream(file);
		ObjectInputStream in=new ObjectInputStream(fis);
		Foo f=(Foo) in.readObject();
		Foo ff=(Foo) in.readObject();
		System.out.println(f.getAge()+" ;;"+ff.getAge());
		//f是foo的深层复制
		System.out.println(f==foo);//false
		in.close();
	 }

 

2. Copia del superficiales y profundas copia *
    1) copia de la regla por defecto de Java es copia superficial, buen rendimiento, pero el aislamiento es pobre. copia fenómeno superficial, copiar sólo la primera capa del objeto
    2) se puede lograr usando una copia de serialización profunda

Caso 2:

public static Object deppClone(Object obj) throws Exception{
		try {
			//1.对象序列化
			//缓冲流:字节数组输出流
			ByteArrayOutputStream buf=new ByteArrayOutputStream();
			//对象输出流
			ObjectOutputStream out =new ObjectOutputStream(buf);
			out.writeObject(obj);//序列化对象到buf中
			out.close();
			
			//2.对象反序列化
			byte[]ary =buf.toByteArray();
			ByteArrayInputStream bais=new ByteArrayInputStream(ary);
			ObjectInputStream in=new ObjectInputStream(bais);
			Object o=in.readObject();//从ary反序列化
			in.close();
			return o;
		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception();
		}
	}

 

Publicados 118 artículos originales · ganado elogios 59 · vistas 490 000 +

Supongo que te gusta

Origin blog.csdn.net/u012255097/article/details/103951613
Recomendado
Clasificación