Java实体对象为什么一定要实现Serializable接口呢?

文章目录

  • Java对象为什么要实现Serializable接口?
  • Serializable接口概述

Java对象为什么要实现Serializable接口?

最近这段时间一直在忙着编写Java业务代码,麻木地搬着Ctrl-C、Ctrl-V的砖,在不知道重复了多少次定义Java实体对象时“implements Serializable”的C/V大法后,脑海中突然冒出一个思维(A):问了自己一句“Java实体对象为什么一定要实现Serializable接口呢?”,关于这个问题,脑海中的另一个思维(B)立马给出了回复“居然问这么幼稚和基础的问题,实现Serilizable接口是为了序列化啊!”,思维(A):“哦,好吧!然而,然后呢?”

此时思维(B)陷入了沉默,突然感觉自己有点浅薄了,好像写了这么多年Java还真是没有太关注过Serializable这个接口!为什么一定要实现Serializable接口?它的底层原理是什么?为什么一定要序列化,序列化又是什么?关于这些问题,不知道各位读者朋友有没有过类似的问题,如果有那么我们就在这篇文章中一起寻找答案吧!当然,如果你对这些问题都很清楚,也欢迎表达看法!

Serializable接口概述

Serializable是java.io包中定义的、用于实现Java类的序列化操作而提供的一个语义级别的接口。Serializable序列化接口没有任何方法或者字段,只是用于标识可序列化的语义。实现了Serializable接口的类可以被ObjectOutputStream转换为字节流,同时也可以通过ObjectInputStream再将其解析为对象。例如,我们可以将序列化对象写入文件后,再次从文件中读取它并反序列化成对象,也就是说,可以使用表示对象及其数据的类型信息和字节在内存中重新创建对象。

而这一点对于面向对象的编程语言来说是非常重要的,因为无论什么编程语言,其底层涉及IO操作的部分还是由操作系统其帮其完成的,而底层IO操作都是以字节流的方式进行的,所以写操作都涉及将编程语言数据类型转换为字节流,而读操作则又涉及将字节流转化为编程语言类型的特定数据类型。而Java作为一门面向对象的编程语言,对象作为其主要数据的类型载体,为了完成对象数据的读写操作,也就需要一种方式来让JVM知道在进行IO操作时如何将对象数据转换为字节流,以及如何将字节流数据转换为特定的对象,而Serializable接口就承担了这样一个角色。

原文链接:戳这里
感谢作者分享!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C3P0连接池工具类使用

c3p0的基本连接配置文件 c3p0-config.xml <c3p0-config><default-config><property name"driverClass">com.mysql.jdbc.Driver</property><property name"jdbcUrl">jdbc:mysql:///mybase</property><property name…

项目经理常见的沟通坏习惯

沟通失败有很多原因&#xff0c;每个项目经理都必须熟悉这些原因、了解其中的行为、并且有责任避免沟通失败的发生。在一些团队中&#xff0c;会产生失败的沟通、失败的项目是因为团队经理本身的坏习惯行为或者他本人容忍组员有些行为&#xff0c;而这些行为和坏习惯无意中会导…

Android屏幕适配

Android屏幕适配一直是Android开发们的一个痛点&#xff0c;各种各样的屏幕分辨率等&#xff0c;对Android的屏幕适配带来了很大的麻烦&#xff0c;而谷歌的解决方案也并不被所有人满意&#xff0c;所以笔者结合Android官方文档&#xff0c;来谈谈这个话题。 术语和基本概念 本…

万维网www

WWW是环球信息网的缩写&#xff0c;&#xff08;亦作“Web”、“WWW”、“W3”&#xff0c;英文全称为“World Wide Web”&#xff09;&#xff0c;中文名字为“万维网”&#xff0c;"环球网"等&#xff0c;常简称为Web。 分为Web客户端和Web服务器程序。 WWW可以让W…

飞控计算机的作用,用于波音777飞机的主要飞控计算机

用于波音777飞机的主要飞控计算机飞行控制计算机容错技术本文介绍了在ERA1992年航空电子会议上介绍的波音777的主要飞控计算机。介绍了系(本文共1页)阅读全文>>在对无人机飞控计算机技术发展应用叙述的基础上,设计了一款基于Zynq平台的应用于小型无人机的飞控计算机硬件平…

Springboot,SSM框架的区别

参考文献&#xff1a;文章一 参考文献&#xff1a;文章二 总结&#xff1a; 1.Springboot 将原有的 xml 配置&#xff0c;简化为 java 注解 2.使用 IDE 可以很方便的搭建一个 springboot 项目&#xff0c;选择对应的 maven 依赖&#xff0c;简化Spring应用的初始搭建以及开发过…

Mysql导入excel数据,解决某些特殊字符乱码问题

问题 做项目需要从excel表格导入到mysql的数据库表中&#xff0c;excel表格中的“规格”字段的“”符号导入数据库表中&#xff0c;会出现部分数据的“”这个符号会乱码&#xff0c;成“&#xff1f;”的形式。 解决方法 打开excel表格&#xff0c;另存为csv文件&#xff1b;用…

Redis进阶实践之十六 Redis大批量增加数据

原文:Redis进阶实践之十六 Redis大批量增加数据一、介绍 有时候&#xff0c;Redis实例需要在很短的时间内加载大量先前存在或用户生成的数据&#xff0c;以便尽可能快地创建数百万个键。这就是所谓的批量插入&#xff0c;本文档的目标是提供有关如何以尽可能快的速度向…

项目经理沟通的四个好习惯

一名项目经理沟通的时间占到工作时间的80%&#xff0c;所以如何提高沟通效率就变成了项目经理提高工作效率的重点。 一名优秀的项目经理&#xff0c;无疑是一个好的沟通者。因为&#xff0c;专业的技能可以使你成为某个领域的专家&#xff0c;但出色的沟通技能&#xff0c…

u盘安装成功计算机里找不到文件夹,u盘里的文件不见了,详细教您U盘内容不显示怎么办...

在工作、学习中&#xff0c;我们需要把资料携带外出的时候&#xff0c;首选的存储工具基本上都是U盘。不过有用户在使用U盘时却遇到了U盘的所有的文件夹不见了的情况&#xff0c;但内存的明明文件还在&#xff0c;这到底是为什么呢&#xff1f;难道U盘的文件真的不见了吗&#…

五分钟实现SpringBoot快速入门

文章目录一、创建Maven工程二、添加SpringBoot的起步依赖三、编写SpringBoot引导类四、编写Controller五、测试六、SpringBoot工程热部署一、创建Maven工程 二、添加SpringBoot的起步依赖 文件位置&#xff1a;pom.xml SpringBoot要求&#xff0c;项目要继承SpringBoot的起步…

分布式系统开发工具包 —— 基于Kryo的Java对象序列化

Kryo是用于Java语言的一个快速和高效的对象图序列化框架。Kryo项目的目的是快速、高效、方便地使用API。当需要持久化对象的时候&#xff0c;不论是持久化到文件、数据库还是网络&#xff0c;都可以使用Kryo。 目前Kryo已经到了4.0.1版本以上了。本文的介绍适用于V2.0以上版本。…

代码编辑器Sublime Text 可以跨平台(linux,window,os x)

说到代码编辑器&#xff0c;大部分人首先会想到UltraEdit&#xff0c;EmEditor和notepad。但今天要介绍的是另一款功能非常强大的代码编辑器——Sublime Text。Sublime Text还是一款跨 OS X、Linux 和 Windows 三大平台的文字/代码编辑器。除了Sublime Text出色的功能&#xff…

计算机画图怎样更改文字,如何在图片上改字|超简单的修改图片里文字方法

这篇文章将要给大家介绍的是&#xff0c;不用联网&#xff0c;不用下载专业的图像处理软件&#xff0c;单纯用画图工具&#xff0c;就能修改表情包、图片上文字的方法&#xff0c;只适合简单的图片处理&#xff0c;复杂的还是交给专业的图像处理工具吧。下面系统吧就给大家带来…

软件维护

所谓软件维护就是在软件已经交付使用之后&#xff0c;为了改正错误或满足新的需要而修改软件的过程。可以通过描述软件交付使用后可能进行的4项活动&#xff0c;具体地定义软件维护。 1.改正性维护 因为软件测试不可能暴露出一个大型软件系统中所有潜藏的错误&#xff0c;所以…

【intellij idea】Project Structure 讲解

参考文章&#xff1a;戳这里 谢谢楼主分享

将以太坊封装为 ERC20

将以太坊封装为 ERC20 TOKEN 很多 DAPP 都是在处理 ERC20接口的 token, 其实很容易将以太坊封装为 ERC20,这样就可以统一处理, 至少我目前在做的雷电网络就是这么处理的. 主要内容复制在网络https://programtheblockchain.com/posts/2018/05/26/wrapping-ether-in-an-erc20-tok…

javascript高级程序设计学习之数值转换 |Number(),parseInt(),parseFloat()

2019独角兽企业重金招聘Python工程师标准>>> 将非数值转换成数值的函数有三个&#xff1a;Number(),parseInt(),parseFloat(); 小记tip&#xff1a;Number()可以用于任何数据类型&#xff1b;parseInt(),parseFloat()针对的是将字符串&#xff1b; Number()的转换规…

软件的可维护性

可以把软件的可维护性定性地定义为&#xff1a;维护人员理解、改正、改动或改进这个软件的难易程度。 提高可维护性是支配软件工程方法学所有步骤的关键目标。