千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  关于学院  >  技术干货  >  正文

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

来源:千锋教育
作者:qyf
关键词: java培训 java培训班
2021-12-06
分享

  本期为大家介绍的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位的哈希字段)。这样,某个对象被序列化之后,即使它所对应的类被修改了,该对象依然可以被正确地反序列化。

  关于“java中怎样将数据对象序列化和反序列化?”的内容,就为大家介绍这么多,想要了解更多java培训的具体课程内容,就加入千锋教育的java交流群吧-858309610,群内会有专职的老师为你答疑解惑。另外群内不定期还会有免费直播课,由现役的讲师来授课。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

相关推荐

  • linux备份文件命令(linux备份文件命令cp怎么用) linux下备份一个目录下所有文件及目录,应该用什么命令1、dump命令 Linux dump命令用于备份文件系统。dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件
  • linuxuseradd命令详解(linux中useradd和adduser) linux中useradd,usermod命令的使用方法是什么1、通过 usermod -L 用户名锁住密码,这时在root用户下su -l 用户名还是可以进入到系统中,因为root用户su到任意用
  • linux清空日志log命令(linux如何清日志) 在Linux下如何清除系统日志1、每天0点执行 usrnginxdellog.sh 保存后退出,输入命令crontab root就会看到varspoolcron文件夹下看到相应的副本文件root。至
  • linux新建用户命令(linux创建用户命令) linux系统添加用户命令是什么1、Linux如何创建用户打开xshell软件,远程访问您的服务器或虚拟机。Linux添加用户名的命令是:Suduseraded。输入用户文件夹,查看是否已经有一个包
  • linux打开文件夹命令(linux常用命令 打开文件) linux进入管理员模式命令在Linux的命令提示窗口下。输入su命令,然后输入密码就可以进入管理员了。首先打开linux vi,进入到编辑页面中,然后按下“ESC”按键就可以切换到命令模式中了。然
  • linux安装rz(Linux安装maven) Linux下rz命令怎么使用解决方法:本地系统中安装Xshell,用Xshell连接虚拟机Linux,在Xshell中输入命令rz即可上传文件。通过你的描述,将本地的文件上传至linux ,可以通过