对象序列化

本文详细介绍了Java对象序列化与反序列化的过程,包括如何使用MyEclipse和Java实现对象的序列化与反序列化,以及序列化在对象持久化和网络传输中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:李永健
撰写时间:2019年 08月06日
开发工具与关键技术:MyEclipse10,java

对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象。对象序列 化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制 流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序 一旦获得了这种二进制流(无论是从磁盘中获取的,还是通过网络获取的),都可以 将这种二进制流恢复成原来的Java对象
序列化的含义和意义
序列化机制允许将实现序列化的Java对象转换成字节序列,这些字节序列可以保存在 磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。序列化机制使得对象可 以脱离程序的运行而独立存在。 对象的序列化(Serialize)指将一个Java对象写入IO流中,与此对应的是,对象的反 序列化(Deserialize)则指从IO流中恢复该Java对象如果需要让某个对象支持序列化 机制,则必须让它的类是可序列化的(serializable)。 为了让某个类是可序列化的,该类必须实现如下两个接口之一:
Serializable(常用)
Externalizable
Java 很多类已经实现了Serializable,该接口是一个标记接口,实现该接口无须实现任 何方法,它只是表明该类的实例是可序列化的。 所有可能在网络上传输的对象的类都应该是可序列化的,否则程序将会出现异 常。
创建Person类如下图:实例Serializable
在这里插入图片描述

调用:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

public class ObjectStreamDemom {
public static void main(String[] args) throws IOException, ClassNotFoundException {
	//‐‐‐‐‐‐‐‐‐‐序列化过程‐‐‐‐‐‐‐‐------
	Person person = new Person();
	//给类设置数据
	person.setName("小明");
	person.setAge(20);
	//实例化 FileOutputStream 输出到文件
	OutputStream out = new FileOutputStream("E:\\z\\Prin.txt");
//	  实例化 ObjectOutputStream 
	ObjectOutputStream  outputStream = new ObjectOutputStream(out);
//	 调用ObjectOutputStream对象的writeObject()方法输出可序列化对象 
	outputStream.writeObject(person);
	//关闭流
	outputStream.close();
	//‐‐‐‐‐‐‐‐‐‐反序列化过程‐‐‐‐‐‐‐‐‐-----
	//读取文件
	InputStream in = new FileInputStream("E:\\z\\Prin.txt");
	ObjectInputStream inputStream = new ObjectInputStream(in);
	//对象从流中读取
	Person person2 =  (Person) inputStream.readObject();//(Person)强制转换
	inputStream.close();
     //打印
	System.out.println(person2.getName());
	System.out.println(person2.getAge());

结果图:
序列化:
在这里插入图片描述
反序列化:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值