关于Java中序列化Serializable的简单注解

2024-04-20 15:38

本文主要是介绍关于Java中序列化Serializable的简单注解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        最近学校的实训课程在学习ssm框架,其中有一点实体类里面实现了Serializable序列化的方法,查了一下,仍然有点模糊,序列化和数据库中的字段有关,方便数据存储和传输。
import java.io.Serializable;
public class Cost implements Serializable{ ......}
        今天,突然又有同学问我这个问题,什么是序列化,为什么要实现这个接口,打开这个接口一看,接口里面是空的。
        那么,为什么要序列化呢?

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

Serializable接口就是Java提供用来进行高效率的异地共享实例对象的机制,实现这个接口即可。

序列化分为两种(正/反):

  1. 把对象转换为字节序列的过程称为对象的序列化
  2. 把字节序列恢复为对象的过程称为对象的反序列化

        前面讲到了,实际上,Serializable接口中什么都没有,是空的,他只是一个表示接口。就是告诉JVM,你来帮我做这个序列化,虚拟机自动进行序列化。
        在设置了序列化之后,类型那一行会给出一个异常,要求添加serialVersionUID,可以手动添加也可以自动添加。
        serialVersionUID的详细的工作机制是:在序列化的时候系统将serialVersionUID写入到序列化的文件中去,当反序列化的时候系统会先去检测文件中的serialVersionUID是否跟当前的文件的serialVersionUID是否一致,如果一直则反序列化成功,否则就说明当前类跟序列化后的类发生了变化。
        简而言之,serialVersionUID是用来辅助对象的序列化与反序列化的。
        如有不完善的地方,欢迎指出。

参考资料:https://baijiahao.baidu.com/s?id=1633305649182361563&wfr=spider&for=pc

————————————————————————————————————————————————————

  • 在Java中,@Serializable注解用于标记一个类可以被序列化。被标记为@Serializable的类可以通过将其转换为字节流来保存到文件、数据库或通过网络传输。
import java.io.*;
import jakarta.annotation.Serializable;@Serializable
public class Person implements Serializable {private static final long serialVersionUID = 1L;private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public int getAge() {return age;}public static void main(String[] args) {Person person = new Person("John Doe", 30);// 将Person对象序列化到文件try (FileOutputStream fos = new FileOutputStream("person.ser");ObjectOutputStream oos = new ObjectOutputStream(fos)) {oos.writeObject(person);System.out.println("Person对象已成功序列化到文件。");} catch (IOException e) {e.printStackTrace();}// 从文件中反序列化Person对象try (FileInputStream fis = new FileInputStream("person.ser");ObjectInputStream ois = new ObjectInputStream(fis)) {Person deserializedPerson = (Person) ois.readObject();System.out.println("从文件中反序列化得到的Person对象为:" + deserializedPerson.getName() + ", " +deserializedPerson.getAge());} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}}
}
  • 在上面的示例中,Person类被标记为@Serializable,表示该类可以被序列化。它具有name和age属性,以及相应的访问方法。在main方法中,我们创建了一个Person对象,将其序列化到文件person.ser中,然后从文件中反序列化该对象,并输出反序列化后的对象的属性值。

  • 请注意,@Serializable注解是Jakarta EE和Java SE中的一个标准注解,可以在这些环境中使用。

这篇关于关于Java中序列化Serializable的简单注解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/920648

相关文章

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.