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. TARS基金会:构建微服务开源生态

    导语 在20世纪60至70年代,软件开发人员通常在大型机和小型机上使用单体架构进行软件开发,没有一个应用程序能够满足大多数最终用户的需求.垂直行业使用的软件代码量更小,与其他应用程序的接口更简单,而可 ...

  2. Spring注解 - 组件的注册

    Spring Boot的出现极大的简化了我们的开发,让我们无需再写繁杂的配置文件,其正是利用了注解的便捷性,而Spring Boot又依赖于Spring,因此深入学习Spring的注解是十分必要的. ...

  3. ajax 瀑布流 demo

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. python安装包的3的方式

    1.pip pip install 包名 2.压缩包(针对pip安装不上) 1.下载源码解压(压缩包有setup.py) 2.python setup.py install 3.****.whl文件 ...

  5. C++:利用全局钩子实现键盘锁

    在家看网课,记笔记不方便.于是就想弄个键盘锁,方便学习(在寝室也好把外接键盘放上去打游戏). 其实这东西挺简单的,就三行代码. HHOOK hk; LRESULT CALLBACK kbproc(in ...

  6. Mol Cell Proteomics. | Integration and analysis of CPTAC proteomics data in the context of cancer genomics in the cBioPortal (解读人:徐洪凯)

    文献名:Integration and analysis of CPTAC proteomics data in the context of cancer genomics in the cBioP ...

  7. 故事:走进JVM的世界(图文并茂)

    注意!本文较长,建议先收藏再阅读.更多文章可以关注作者公众号:码上实战 你也可以 star 我的 GitHub上本文所属仓库:https://github.com/flyhero/MarkNote 说 ...

  8. url,解释器,响应器,版本控制,分页

    路由控制 -基本路由写法:咱们一直写的

  9. PTA 创建计算机类

    6-5创建计算机 (10分) 定义一个简单的Computer类,有数据成员芯片(cpu).内存(ram).光驱(cdrom)等等,有两个公有成员函数run.stop.cpu为CPU类的一个对象,ram ...

  10. SpringBoot2 整合 Swagger2

    SpringBoot2 整合 Swagger2 SpringBoot整合三板斧 第一步.引入pom <dependency> <groupId>com.spring4all&l ...