当前位置: 首页 > 编程日记 > 正文

java培训教程分享:Java中怎样将数据对象序列化和反序列化?

本期为大家介绍的java培训教程是关于“Java中怎样将数据对象序列化和反序列化?”的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java中都是保存在对象当中的。那么我们要怎样将对象中的数据保存到磁盘上呢?这时就需要使用Java中的对象序列化。

java培训教程分享:Java中怎样将数据对象序列化和反序列化?

对象的序列化(Serializable)是指将一个Java对象转换成一个I/O流中字节序列的过程。其目的是为了将对象保存到磁盘中,或允许在网络中直接传输对象。对象序列化机制可以使内存中的Java对象转换成与平台无关的二进制流,既可以将这种二进制流持久地保存在磁盘上,又可以通过网络将这种二进制流传输到另一个网络节点,其他程序在获得了这种二进制流后,还可以将它恢复成原来的Java对象。这种将I/O流中的字节序列恢复为Java对象的过程被称之为反序列化(Deserialize)。

如果想让某个对象支持序列化机制,那么这个对象所在的类必须是可序列化的。在Java中,可序列化的类必须实现Serializable 或Externalizable两个接口之一。这两个接口实现序列化机制的主要区别如表7-7所示。

与实现Serializable 接口相比,虽然实现Externalizable 接口可以带来一定性能上的提升,但也将导致编程的复杂度增加。在实际开发时,大部分都是采用实现Serializable 接口的方式来实现序列化的。

1

表7-7 实现 Serializable 与实现Externalizable 的对比

使用Serializable 接口实现序列化非常简单,只需要让目标类实现Serializable 接口即可,无须实现任何方法。例如让Person类实现序列化接口的代码如下:

public class Person implements Serializable {

//为该类指定一个serialVersionUID变量值

private static final long serialVersionUID = 1 L:

//声明变量

private int id;

private String name;

private int age;

//此处省略各属性的getter和setter方法

}

在上述代码中,Person类实现了Serializable接口,并指定了一个serialVersionUID变量值,该变量值的作用是标识Java类的序列化版本。如果不显式地定义serialVersionUID变量值,那么将由JVM根据类的相关信息计算出一个serialVersionUID变量值。

小提示:serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。因此,为了在反序列化时确保序列化版本的兼容性,最好在每一个要序列化的类中加入privatestatic final long serialVersionUID的变量值,具体数值可自定义(默认是1L,系统还可以根据类名、接口名、成员方法及属性等生成的一个64位的哈希字段)。这样,某个对象被序列化之后,即使它所对应的类被修改了,该对象依然可以被正确地反序列化。

相关文章:

C#实现的几种委托

//普通委托DeleteShow ds new DeleteShow(ShowName);Console.WriteLine("----------------------");Console.WriteLine("普通委托----请输入用户名:");string Name Console.ReadLine();Console.WriteLine(ds(Name));Console.WriteLine("-----------…

AFN框架使用整理

1.AFN框架基本使用 1 AFN内部结构 AFN结构体 NSURLConnection(iOS9.0废弃了) AFURLConnectionOperationAFHTTPRequestOperationAFHTTPRequestOperationManager(封装了常用的 HTTP 方法) 属性 baseURL :AFN建议开发者针对 AFHTTPRequestOperationManager 自定义个一个单例子类&a…

【青少年编程】【一级】小镇一日游

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档&…

参加java培训后,就业方向有哪些

参加java培训后,就业方向有哪些?很多正在参加java培训的同学对这个问题都比较关注,那么下面小编就针对这个问题为大家做下详细的介绍,希望能够帮助到大家。 参加java培训后,就业方向有哪些?首先我们来了解一下Java的应用领域&am…

访问本地文件403

电脑不知道怎么设置的根目录下看不到所有文件夹 而且打开一个新的文件夹显示 Forbidden You dont have permission to access /atina/ on this server. 最后没办法只能手动把文件夹加上权限 chmod -R 777 atina //-R 递归修改,“/文件夹/“以下所有内容&#xff08…

iOS微信支付集成 SDK1 7 5

最近做了一个新项目,涉及到支付宝和微信支付,支付宝和微信都是业界的老大哥,相信大家都有所觉得文档、SDK都是各种坑吧(纯粹吐槽而已),这是继上篇支付宝支付集成后接着的微信支付集成。 1.微信商户申请步骤…

【青少年编程(第26周)】一下子多了很多事!

2021年08月15日(周日)晚20:00我们在青少年编程竞赛交流群开展了第二十六次直播活动。我们直播活动的主要内容如下: 首先,我们奖励了上周测试超过60分的小朋友。 其次,介绍了Datawhale青少年组队学习活动的规划&#x…

Python培训教程分享:10款超好用的Python开发工具

学会Python技术后,我们在参加工作的时候如果能有辅助工具的话,那么会很大程度的提高我们的工作效率,那么Python都有哪些好用的开发工具呢?下面小编就为大家详细的介绍一下10款超好用的Python开发工具! Python培训教程分享:10款超…

pfSense book之2.4安装指南

pfSense商店的硬件产品都预装了pfSense软件。要重新安装pfSense软件或将其安装到其他硬件,请按照本章所述下载安装程序映像。警告预先从pfSense商店或授权合作伙伴以外的商业供应商预装pfSense软件的硬件不值得信任。 第三方可能已经对软件进行了未经授权的、未知的…

css中绝对定位中的left和top属性

<html><head><title>Absolute Position</title><style type "text/css">/*body具有红色边框&#xff0c;宽度300px&#xff0c;高度300px*/body {border: 1px solid red;width: 300px;height: 300px;}/*被绝对定位,颜色为silver*/div…

教育部办公厅关于2020-2021学年面向中小学生的全国性竞赛活动名单的公示

来源&#xff1a; http://www.moe.gov.cn/jyb_xxgk/s5743/s5745/202007/t20200701_469571.html 教育部办公厅关于2020-2021学年面向中小学生的全国性竞赛活动名单的公示 根据《教育部办公厅印发<关于面向中小学生的全国性竞赛活动管理办法&#xff08;试行&#xff09;&g…

UI设计培训分享:UI设计师如何准备面试?

很多参加完UI培训的同学后期都是需要面临找工作的&#xff0c;那么面试环节是必须要经历的&#xff0c;今天小编为大家介绍的内容就是关于UI设计师如何准备面试?希望下面的内容能够帮助到正在找工作的同学们。 UI设计培训分享&#xff1a;UI设计师如何准备面试? 一、 简历要重…

【CLR的执行模型:将源代码编译成托管模块】

CLR:由多种不同编程语言使用的运行库 托管模块&#xff1a;中间语言和元数据 非托管语言&#xff1a;C/C&#xff0c;不过此为特殊&#xff0c;可以写成托管代码 托管语言&#xff1a;C# 托管模块 1,PE32/PE32头:PE32运行在win32位系统中,win32运行在64位系统 2,CLR头,包括CLR版…

【组队学习】【28期】数据采集从入门到精通

数据采集从入门到精通 论坛版块&#xff1a; http://datawhale.club/c/team-learning/38-category/38 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/CollectData 学习目标 随着数字化的不断推进&#xff0c;数据采集在数据…

url传递数据类型

php中传递数据&#xff0c;get或post方式为啥用字符串传递&#xff0c;为什么不能直接用数组形式&#xff0c;用的话可以吗 转载于:https://www.cnblogs.com/guoyinglichong/p/8184723.html

零基础参加java培训哪家机构好

零基础想要学会java技术&#xff0c;那么参加java培训机构是非常明智的选择&#xff0c;为什么这么说呢?因为如果选择自学&#xff0c;那么不仅学到的技术杂乱无章&#xff0c;后期工作也会有很大阻碍&#xff0c;系统的学习就会好很多&#xff0c;那么如今零基础参加java培训…

如何通过一行代码下载B站视频?

文章目录如何通过一行代码下载B站视频&#xff1f;Step1&#xff1a;安装you-getStep2&#xff1a;下载B站视频总结如何通过一行代码下载B站视频&#xff1f; You-Get 是一个基于 Python 3 的下载工具。使用 You-Get 可以很轻松的下载网络上的视频、图片及音乐。 下面我们介绍…

软件架构是软件的组织形式

软件架构是软件的组织形式 软件架构是软件的逻辑组织形式&#xff1b; 软件框架是软件的物理组织形式。

linux创建用户并授予sudo权限

1. 新建用户 rootubuntu:~# adduser hadoop rootubuntu:~# passwd hadoop #为hadoop用户设置密码 2. 为hadoop用户添加sudo权限 rootubuntu:~# sudo gedit /etc/sudoers 把root那行复制后改成hadoop&#xff0c;hadoop就有了sudo权限&#xff0c;需要sudo密码则为ALL&#xff0…

学java培训开发需要多少钱

学java培训开发需要多少钱?这个问题对于想要学习java技术的小伙伴们来说是非常重要的&#xff0c;如今市面上的java培训机构非常多&#xff0c;收费标准都是多少呢?那么来看看下面的详细介绍吧。 学java培训开发需要多少钱?不少学员会直接咨询费用的问题&#xff0c;确实&am…

Scratch青少年编程能力等级测试模拟题(一级)

青少年编程竞赛交流群已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

ODBC、OLE连接各种数据库的连接字符串

简介 我们在使用数据库的时候&#xff0c;首先需要打开这个数据库。我们可以找到集中类型的数据库&#xff0c;每个都使用不同的连接方式。下面列举了一下主要的数据库的连接字符串A&#xff1a;使用ODBC方式1:dBASE连接字符串strConnection _T("Driver{Microsoft dBASE …

opencv3 图像处理(一)图像缩放( python与c++ 实现)

opencv3 图像处理 之 图像缩放&#xff08; python与c实现 &#xff09; 一. 主要函数介绍 1) 图像大小变换 Resize () 原型&#xff1a; void Resize(const CvArr* src,CvArr* dst,intinterpolationCV_INTER_LINEAR); 说明&#xff1a; src 表示输入图像。 dst表示输出图像。 …

web前端培训要学多久

​ 近几年web前端在互联网行业的快速发展&#xff0c;很多人都对web前端是非常感兴趣的&#xff0c;学习web前端技术的人越来越多&#xff0c;那么参加web前端培训要学多久呢?相信大家都想知道这个答案&#xff0c;我们来看看下面的详细介绍。 web前端培训要学多久?首先对于前…

【Arduino】开发入门教程【一】什么是Arduino

Arduino Arduino 是一款便捷灵活、方便上手的开源电子原型平台&#xff0c;包含硬件&#xff08;各种型号的arduino板&#xff09;和软件&#xff08;arduino IDE)。它适用于艺术家、设计师、爱好者和对于“互动”有兴趣的朋友们。Arduino&#xff0c;是一个基于开放原始码的软…

【云计算的1024种玩法】回忆经典,用虚拟主机重建复古DZ和无心宠物

前言 在移动互联网和大型网游没有普及前&#xff0c;很多地方论坛或者专业性论坛都会有一个 —— “无心宠物” 插件来引流和吸引用户&#xff0c;可以说是当下网页游戏的老前辈了。还记得我以前就是为了玩这个游戏&#xff0c;就在各个论坛疯狂发帖赚经验&#xff0c;想来还是…

谢文睿:西瓜书 + 南瓜书 吃瓜系列 9. 集成学习(上)

Datawhale南瓜书是经典机器学习教材《机器学习》&#xff08;西瓜书&#xff09;的公式推导解析指南&#xff0c;旨在让在学习西瓜书的过程中&#xff0c;再也没有难推的公式&#xff0c;学好机器学习。 航路开辟者&#xff1a;谢文睿、秦州开源内容&#xff1a;https://githu…

java培训分享:java软件开发可以用哪些软件?

从事java相关工作的小伙伴应该都有一个习惯&#xff0c;那就是运用软件的方便来达到高效率工作&#xff0c;本期小编为大家介绍的java培训教程就是关于“java软件开发可以用哪些软件?”的内容&#xff0c;来看看下面的详细介绍吧。 java软件开发可以用哪些软件? MyEclipse 顾…

Ext-第一课基本配置

(1)废话&#xff1a;最近开始学习使用Ext&#xff0c;所以记录下来自己的配置和新的&#xff0c;提供给新手菜鸟们&#xff0c;希望能对你有所帮助。 (2)走着&#xff1a;官方文档&#xff1a;http://www.myext.cn/ext-3.2.1/docs/ 我使用的是ext-3.3.0 下载解压后如下图&#…

Only POT texture can be compressed to PVRTC format

在图片压缩格式 报这个Warning的时候&#xff0c;意思是该图片必须要采用2的幂次方大小才能使用该格式。 POT: Power of Two. 采取方式是在advanced里边&#xff0c;把Non Power of 2 设置一下。或者原图采用幂次方大小。