Java之Serializable讲解

在Java中操作数据库经常会遇到Serializable,那么它具体是什么呢?

我们将从以下四个方面介绍:

1、什么是Serializable?

Serializable是Java提供的通用数据保存、读取和传输的接口,
其源码极为简洁,就是一个接口的声明。
在这里插入图片描述

2、Serializable作用

通过实现Serializable接口的类,该类所实例化的对象(实例变量)的状态信息在内存中可以持久化保存、传输,该过程称为序列化。

在这里插入图片描述
与之相反的是,将序列化的结果变成对象的过程称为反序列化。
在这里插入图片描述

3、Serializable应用场景

当我们需要把对象的状态信息:

A 通过网络进行传输(用套接字在网络上传送)
B 需要将对象的状态信息持久化(写入硬盘)

以便将来使用时都需要把对象进行序列化

4、Serializable使用过程

A 创建一个类,并实现Serializable接口
在这里插入图片描述
B 写入到文件中

C 进行读操作

5、Serializable的注意事项

a)序列化时,只对对象的状态进行保存,而不管对象的方法;
b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
c)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
d) serialVersionUID是用来辅助对象的序列化与反序列化的,原则上序列化后的数据当中的serialVersionUID与当前类当中的serialVersionUID一致,那么该对象才能被反序列化成功。这个serialVersionUID的详细的工作机制是:在序列化的时候系统将serialVersionUID写入到序列化的文件中去,当反序列化的时候系统会先去检测文件中的serialVersionUID是否跟当前的文件的serialVersionUID是否一致,如果一直则反序列化成功,否则就说明当前类跟序列化后的类发生了变化,比如是成员变量的数量或者是类型发生了变化,那么在反序列化时就会发生crash,并且回报出错误
e)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:
1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。

看这篇文章有感:Serializable原文地址

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的XML Serializable是一种用于将Java对象转换为XML格式的机制。它允许我们将Java类实例转换为可在网络或存储设备上进行持久化的格式,并且可以将这些实例恢复为原始Java对象。 为了使一个Java对象可序列化到XML,我们需要通过在类定义中添加特定的注解来指示Java编译器。最常用的注解是@XmlRootElement,它用于标记一个类作为根元素,即可被序列化和反序列化的类。另外,我们还可以使用其他注解如@XmlAttribute、@XmlElement和@XmlAccessorType等来定义类的成员如何在XML中进行表示。 当我们使用XML Serializable时,Java对象的状态和结构将以一种人类可读的格式存储在XML文档中。每个成员变量将作为XML元素,而属性将作为XML属性。这样,我们就可以很容易地将Java对象转换为XML并存储在磁盘上,或通过网络传输给其他系统。 当我们想要从XML中读取数据并恢复成Java对象时,我们只需使用XML Serializable的相应API即可。通过解析XML文档,我们可以提取XML元素和属性的值,并使用它们来创建新的Java对象。这种机制使得我们可以方便地在Java应用程序中使用外部数据源,例如配置文件或从其他系统接收的数据。 总的来说,Java的XML Serializable机制允许我们将Java对象序列化为XML格式,并可以轻松地将XML转换回Java对象。这为我们提供了一种灵活的方式来存储和交换数据,并且很容易与其他系统进行集成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值