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

2025-05-29 0 55

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

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

1.实体-Employee

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35
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.测试类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
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.输出

?

1

2
[B@e05d173

Name: admin,Age: 20

5.总结

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

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

原文链接:http://blog.csdn.net/afandaafandaafanda/article/details/49159141

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java 序列化和反序列化实例详解 https://www.kuaiidc.com/118237.html

相关文章

发表评论
暂无评论