博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 序列化和反序列化
阅读量:2236 次
发布时间:2019-05-09

本文共 2241 字,大约阅读时间需要 7 分钟。

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

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@e05d173Name: admin,Age: 20
5.总结

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

转载地址:http://dlsbb.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】36-Valid Sudoku
查看>>
【LEETCODE】205-Isomorphic Strings
查看>>
【LEETCODE】204-Count Primes
查看>>
【LEETCODE】228-Summary Ranges
查看>>
【LEETCODE】27-Remove Element
查看>>
【LEETCODE】66-Plus One
查看>>
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
word2vec 模型思想和代码实现
查看>>
怎样做情感分析
查看>>
用深度神经网络处理NER命名实体识别问题
查看>>
用 RNN 训练语言模型生成文本
查看>>
RNN与机器翻译
查看>>
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>