首页 > 开发 > Java > 正文

Java 序列化和反序列化实例详解

2024-07-13 10:05:47
字体:
来源:转载
供稿:网友

Java 序列化和反序列化实例详解

在分布式应用中,对象只有经过序列化才能在各个分布式组件之间传输,这就涉及到两个方面的技术-发送者将对象序列化,接受者将对象反序列化,下面就是一个很好的例子!

1.实体-Employee

import java.io.Serializable;  public class Employee implements Serializable{   /**    *    */   private static final long serialVersionUID = 1L;   public String getName() {     return name;   }   public void setName(String name) {     this.name = name;   }   public int getAge() {     return age;   }   public void setAge(int age) {     this.age = age;   }   private String name;   private int age; } 

2.SerializeHelper

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream;  public class SerializeHelper {   public byte[] Serialize(Object object) {     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();     try {       ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);       //将对象写入到字节数组中进行序列化       objectOutputStream.writeObject(object);       return byteArrayOutputStream.toByteArray();     } catch (IOException e) {       e.printStackTrace();     }     return null;   }      public Object deSerialize(byte[] bytes) {     //将二进制数组导入字节数据流中     ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);     try {       //将字节数组流转化为对象       ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);       return objectInputStream.readObject();     } catch (IOException e) {       e.printStackTrace();     } catch (ClassNotFoundException e) {       e.printStackTrace();     }     return null;   } } 

3.测试类

public class Hello {    /**    * @param args    */   public static void main(String[] args) {     // TODO Auto-generated method stub     SerializeHelper serializeHelper = new SerializeHelper();     Employee employee = new Employee();     employee.setName("admin");     employee.setAge(20);     byte[] serializObject = serializeHelper.Serialize(employee);     System.out.println(serializObject);          Employee e = (Employee)serializeHelper.deSerialize(serializObject);     System.out.println("Name: " + e.getName()+",Age: " + e.getAge());   } } 

4.输出

[B@e05d173 Name: admin,Age: 20 

5.总结

序列化和反序列化还有其他的框架可以完成,比如Hession,有机会再研究!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表