implements Serializable


1. 序列化和反序列化

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

  • 在Java和其他语言进行通信的时候, 需要将对象转化成一种通用的格式例如Json( 转换成大家都认识的对象 ), 从对象都Json字符串的转换就是序列化的过程, 反过来, 从Json字符串转换成Java对象就是反序列化的过程.
  • 在Java需要把一个对象的状态保存到文件或者是数据库的时候, 就是数据存取的过程中的中间过程.

2. 为什么要显示声明serialVersionUID

serialVersionUID 的作用是验证序列化和反序列化的过程中, 对象是否保持一致. 所以在一般情况下我们需要显示的声明serialVersionUID. 如果接受者加载的该对象的类的serialVersionUID
和发送者的类版本号不同的话, 反序列化会爆出InvalidClassException错误.

什么时候会导致爆出这个错误呢? 例如在没有显示声明版本号的时候, 先将对象进行了序列化; 然后不管出于什么目的, 该对象的类被修改了, 哪怕仅仅是添加了一个强制转换, 或者将一个public的属性给私有化了, 都会影响版本号. 此时在这个环境下用反序列化的方法读取以前序列化之后存储起来的对象是会报错的.


3. 为什么序列化值不用1L

记得很久以前看的资料, 现在在网上找没找到可以参考的. 下面写的东西 是我自己以前看到的, 并且自认为正确的.

serialVersionUID是根据类名,接口名,方法名,成员属性以及他们的修饰符生成的唯一ID, 在反序列化的时候会使用ID作为一个判断条件去寻找并验证类, 如果serialVersionUID都是一样的1L的话会降低反序列化的速度.

implements Serializable的更多相关文章

  1. 为什么很多类甚者底层源码要implements Serializable ?

    为什么很多类甚者底层源码要implements Serializable ? 在碰到异常类RuntimeException时,发现Throwable实现了 Serializable,还有我们平进的ja ...

  2. javaBean为什么要implements Serializable

    转自:https://www.cnblogs.com/jqlbj/p/6261592.html 一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的.因此如果要序 ...

  3. implements Serializable有什么作用?

    没有implements Serializable,你就不能通过rmi(包括ejb)提供远程调用.serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序 ...

  4. java 输入输出 对象序列化implements Serializable与反序列化:ObjectOutputStream.writeObject() ;objectInputStream.readObject() ;serialVersionUID字段注意

    对象序列化 对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象.对象序列化机制允许把内存中的 Java 对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,通过网络将 ...

  5. implements Serializable有什么作用

    转自 http://blog.csdn.net/dinghqalex/article/details/46009911

  6. java.io.Serializable 序列化接口

    什么是序列化.反序列化? Serialization(序列化)是一种将对象以一连串的字节描述的过程: 反序列化deserialization是一种将这些字节重建成一个对象的过程. 序列化通俗一点说就是 ...

  7. serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法

    ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Ser ...

  8. Java Serializable系列化与反系列化

    [引言] 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接 ...

  9. 在Activity之间传递参数(三)——serializable和parcelable的区别

    传递值对象: 一.serializable实现:简单易用 serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可.Serializable 接口是一种 ...

随机推荐

  1. js之重写原型对象

    “实例中的指针仅指向原型,而不是指向构造函数”. “重写原型对象切断了现有原型与任何之前已经存在的对象实例之间的关系:它们引用的仍然是最初的原型”.——前记 var fun = function(){ ...

  2. JavaScript的数组(一)

    在JavaScript中,对象,数组,函数是最最常用的东东了,写完了对象和函数,最后来说说数组吧,提到数组,就只能想到,map,forEach啊,pop,push啊,当真是没有一点点的积累了?这么多年 ...

  3. 【转】JS内置对象方法

    String内置对象的方法 1. concat() concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串 var str = "Hello"; var out ...

  4. Head First设计模式——生成器和责任链模式

    生成器 生成器模式:封装一个产品的构造过程,并允许按步骤构造. 现又一个度假计划指定,需要指定度假每一天的活动.旅馆.用餐.门票等等事情,但是每个客人的度假计划可能不太一样.例如天数.活动类型.用餐等 ...

  5. 使用 ALSAlib 播放 wav

    在 ARM 2440 开发板上正常播放 16bit  44100 采样率的wav , 为了程序简单,没有判断返回值. 补充,在 ubunto 上也能正常播放. 编译方法: arm-linux-gcc ...

  6. Linux定制化RPM包

    定制化RPM包 1.Linux安装软件方法 1- rpm/yum安装 简单.速度快,但是不能定制安装 RPM RedHat Package Manager(RPM软件包管理器) 2- 二进制安装 解压 ...

  7. 【Spring Data 系列学习】Spring Data JPA @Query 注解查询

    [Spring Data 系列学习]Spring Data JPA @Query 注解查询 前面的章节讲述了 Spring Data Jpa 通过声明式对数据库进行操作,上手速度快简单易操作.但同时 ...

  8. 群辉DS418play体验+经验分享

    群辉DS418play体验+经验分享     群辉DS418play体验+经验分享   购买初衷 近期百度网盘到期,我又需要重复下载很多资源(游戏.电影.毛片),下载没速度&下完没空间怎么办? ...

  9. Python基础 | 数据文件的读写

    目录 txt txt的读入 txt的写出 csv xls\xlsx 在线网页数据 常用的工具 爬虫的步骤 pdf pdfrw PyPDF2 提取文档信息 word文档 其他统计软件生成文件 本文总结使 ...

  10. 记一次RSA解密过程

    有问题可以评论 openssl rsa -pubin -text -modulus -in warmup -in pub.key