欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2021-09-02 10:07:26|栏目:JAVA代码|点击:

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,有机会再研究!

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

上一篇:SpringBoot使用WebJars统一管理静态资源的方法

栏    目:JAVA代码

下一篇:一篇文章教你使用SpringBoot如何实现定时任务

本文标题:Java 序列化和反序列化实例详解

本文地址:http://www.codeinn.net/misctech/171852.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有