Java中克隆对象序列化的详细说明

来源:爱站网时间:2020-10-02编辑:网友分享
Java序列化想要允许您将对象的状态写入字节流,并从其他地方读取字节流中的数据,并重构相同的对象,相信有一定的难度,爱站技术频道小编主要给大家介绍了Java中克隆对象序列化的详细说明,大家可以借鉴一下。

Java序列化想要允许您将对象的状态写入字节流,并从其他地方读取字节流中的数据,并重构相同的对象,相信有一定的难度,爱站技术频道小编主要给大家介绍了Java中克隆对象序列化的详细说明,大家可以借鉴一下。

简述:

用字节流的方式,复制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中克隆对象序列化的详细说明都有了一定的了解了吧,希望大家能继续支持js.aizhan.com。

上一篇:Java编程中流对象选择的详细说明

下一篇:Java生成JSON字符串的方法

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载