欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中对象的序列化方式克隆详解

程序员文章站 2024-03-08 22:23:16
java 序列化技术可以使你将一个对象的状态写入一个byte 流里,并且可以从其它地方把该byte 流里的数据读出来,重新构造一个相同的对象。 简述: 用字节流的方式,...

java 序列化技术可以使你将一个对象的状态写入一个byte 流里,并且可以从其它地方把该byte 流里的数据读出来,重新构造一个相同的对象。

简述:

用字节流的方式,复制java对象

代码:

流克隆复制函数

public static object deepclone(object obj){ 
 if(obj == null){ 
  return null; 
 } 
 try { 
  bytearrayoutputstream byteout = new bytearrayoutputstream(); 
  object cloneobj = null; 
  objectoutputstream out = new objectoutputstream(byteout); 
  out.writeobject(obj); 
  bytearrayinputstream bytein = new bytearrayinputstream(byteout.tobytearray()); 
  objectinputstream in = new objectinputstream(bytein); 
  cloneobj = in.readobject(); 
  return cloneobj; 
 } catch (exception e) { 
  throw new runtimeexception(e); 
 } 
} 

objectclone.java

package test; 
 
import java.io.bytearrayinputstream; 
import java.io.bytearrayoutputstream; 
import java.io.objectinputstream; 
import java.io.objectoutputstream; 
import java.io.serializable; 
 
public class objectclone { 
 /** 
  * 测试对象 
  */ 
 private static class person implements serializable { 
  private string name; 
  private int age; 
  person(string name, int age){ 
   this.name = name; 
   this.age = age; 
  } 
  @override 
  public string tostring() { 
   return string.format("name: %s\nage: %s", name, age); 
  } 
 } 
  
 /** 
  * 测试函数 
  */ 
 public static void main(string[] args) { 
  person person = new person("henry", 22); 
  person newperson = (person)objectclone.deepclone(person); 
  system.out.println(newperson); 
 } 
  
 /** 
  * 工具类 
  * 
  * @param obj 
  * @return 
  */ 
 public static object deepclone(object obj){ 
  if(obj == null){ 
   return null; 
  } 
  try { 
   bytearrayoutputstream byteout = new bytearrayoutputstream(); 
   object cloneobj = null; 
   objectoutputstream out = new objectoutputstream(byteout); 
   out.writeobject(obj); 
   bytearrayinputstream bytein = new bytearrayinputstream(byteout.tobytearray()); 
   objectinputstream in = new objectinputstream(bytein); 
   cloneobj = in.readobject(); 
   return cloneobj; 
  } catch (exception e) { 
   throw new runtimeexception(e); 
  } 
 } 
} 

测试结果:

Java中对象的序列化方式克隆详解

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。